rsyntaxtree 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +28 -0
  3. data/README.md +12 -0
  4. data/dev/region_shade_proposal.md +66 -0
  5. data/docs/_examples/064.md +25 -0
  6. data/docs/_includes/escape_char_table.html +1 -0
  7. data/docs/assets/img/003.png +0 -0
  8. data/docs/assets/img/004.png +0 -0
  9. data/docs/assets/img/005.png +0 -0
  10. data/docs/assets/img/006.png +0 -0
  11. data/docs/assets/img/007.png +0 -0
  12. data/docs/assets/img/008.png +0 -0
  13. data/docs/assets/img/010.png +0 -0
  14. data/docs/assets/img/024.png +0 -0
  15. data/docs/assets/img/052.png +0 -0
  16. data/docs/assets/img/057.png +0 -0
  17. data/docs/assets/img/059.png +0 -0
  18. data/docs/assets/img/063.png +0 -0
  19. data/docs/assets/img/064.png +0 -0
  20. data/docs/assets/svg/003.svg +2 -2
  21. data/docs/assets/svg/004.svg +4 -4
  22. data/docs/assets/svg/005.svg +1 -1
  23. data/docs/assets/svg/006.svg +2 -2
  24. data/docs/assets/svg/007.svg +2 -2
  25. data/docs/assets/svg/008.svg +2 -2
  26. data/docs/assets/svg/010.svg +3 -3
  27. data/docs/assets/svg/024.svg +2 -2
  28. data/docs/assets/svg/052.svg +15 -15
  29. data/docs/assets/svg/057.svg +2 -2
  30. data/docs/assets/svg/059.svg +1 -1
  31. data/docs/assets/svg/063.svg +36 -36
  32. data/docs/assets/svg/064.svg +63 -0
  33. data/docs/documentation.md +35 -1
  34. data/docs/documentation_ja.md +34 -1
  35. data/lib/rsyntaxtree/base_graph.rb +20 -0
  36. data/lib/rsyntaxtree/element.rb +8 -1
  37. data/lib/rsyntaxtree/lsif_graph.rb +3 -2
  38. data/lib/rsyntaxtree/markup_parser.rb +17 -3
  39. data/lib/rsyntaxtree/string_parser.rb +1 -1
  40. data/lib/rsyntaxtree/svg_graph.rb +75 -2
  41. data/lib/rsyntaxtree/tikz_generator.rb +123 -4
  42. data/lib/rsyntaxtree/version.rb +1 -1
  43. data/test/lsif_test.rb +15 -1
  44. data/test/markup_parser_test.rb +43 -0
  45. data/test/node_styling_test.rb +117 -0
  46. data/test/tikz_test.rb +58 -0
  47. metadata +6 -3
  48. data/.claude/docs/json-schema-spec.md +0 -521
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e76c90ef8a999398071a513ebb2252ed2ef4db01c2fcfa1873c0b905a87c8e56
4
- data.tar.gz: 81b4e5e68126540111ee2533f4c8d807dac86a31eece4595718634edd40c989f
3
+ metadata.gz: b1ba1c70fd18704ea011d4edb62af9cb18b0109852731faf08a0f8a24360acab
4
+ data.tar.gz: da6e7c971afc3e5b1b1dbea1f9e0955a511a71702c3869673a363106f45d9459
5
5
  SHA512:
6
- metadata.gz: 54ae414b09823cf07637535896d47f0a639cf63d3142997bf13a3d08bd6dc09dee156df1c1cccf48d3acafa3fe8138c58fccfc0d411787843fbd6f4667a85cf9
7
- data.tar.gz: 6f407aa8d12d08d6e1a75b0d10ced8a6cdbcf42739ef7fbf2a1a4d71e34d94ce36c00711ccb6a0c57022e5eb0763aae2d3d50a6ac3f0f3779aa9b42c90a37dd3
6
+ metadata.gz: b5f0a68402ced555dd3ab07c1a3540225b6afe880f56385c2e9c419974bddbde31330cc78a9a2c8306c1692e7810a6bf57c1b35812af62135305241083daf011
7
+ data.tar.gz: 16268685b95ca4e98d566275b0f82d4f265b88c665ac6fee796837bfa8ceee36df45e708ec057e3dc0e62270e6bfcc9f4f599177608e7a9d7c76f314d67b1b08
data/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.6.0] - 2026-06
4
+
5
+ ### Added
6
+ - Region shade (`%` prefix): paints a semi-transparent plane behind the whole
7
+ subtree a node governs, for marking c-command/binding domains and cognitive
8
+ grammar dominions. Color reuses the `@color:` syntax; bare `%` uses light gray.
9
+ Each plane has a darker same-color border for visibility on white. An explicit
10
+ shade color is always honored (consistent with `@color:` node text); use bare
11
+ `%` for a gray monochrome shade. Works in both TTB and LTR layouts and across
12
+ SVG/PNG/PDF/JPG/GIF.
13
+ - Region shade support in TikZ export (via `forest` `fit to=tree`) and in LSIF
14
+ node `style.region`. TikZ region colors (names and hex, including SVG/CSS
15
+ names like `lightblue` that xcolor lacks) are emitted as explicit RGB so the
16
+ output compiles.
17
+ - `\%` escape for a literal leading percent sign.
18
+ - Typographic apostrophe: a straight ASCII apostrophe (`'`) in a label is now
19
+ rendered as a curly apostrophe (`’`, U+2019) for smarter typography, e.g. the
20
+ X-bar prime in `T'`. Applied to all fonts and measured before layout so
21
+ spacing stays correct.
22
+ - Example 064: region shade for a c-command domain.
23
+
24
+ ### Changed
25
+ - LSIF output version bumped to `0.3.0` (adds node `style.region`).
26
+
27
+ ### Fixed
28
+ - Region shade on the root/topmost node no longer clipped by the canvas: the
29
+ SVG viewBox now grows to include region planes that extend past the tree.
30
+
3
31
  ## [1.5.0] - 2026-04
4
32
 
5
33
  ### Added
data/README.md CHANGED
@@ -48,6 +48,14 @@ Supports named colors (`red`, `blue`, `green`, etc.) and hex colors (`@#FF5733:`
48
48
 
49
49
  Combine with colors: `[#@red:NP text]`, `[^@blue:VP phrase]`
50
50
 
51
+ ### Region Shade
52
+
53
+ Shade the whole subtree a node governs with a semi-transparent plane — useful for c-command/binding domains and cognitive grammar dominions. Prefix the node with `%`; the color reuses the `@color:` syntax (bare `%` is gray):
54
+
55
+ ```text
56
+ [TP [DP everyone] [%@lightblue:T' [T will] [VP praise it]]]
57
+ ```
58
+
51
59
  ### Path Drawing
52
60
 
53
61
  Connect nodes with lines or arrows:
@@ -194,6 +202,10 @@ Please use the following BibTeX entry when citing RSyntaxTree:
194
202
  }
195
203
  ```
196
204
 
205
+ ## Related Blog Posts
206
+
207
+ - [RSyntaxTree tag on yohasebe.com](https://yohasebe.com/tags/rsyntaxtree/)
208
+
197
209
  ## Author
198
210
 
199
211
  Yoichiro Hasebe (<yohasebe@gmail.com>)
@@ -0,0 +1,66 @@
1
+ # 提案:領域シェード(部分木をまたぐ網掛け)機能
2
+
3
+ 作成: 2026-06-25 / 動機: 容認度研究プロジェクト(2026-accdeptability)で、c-command 領域・束縛領域・認知文法の dominion を「面」で示したい。現状の囲み(`#`/`##`/`###`)は**ノードのラベルのみ**で、部分木全体を囲めない。
4
+
5
+ ## 現行マークアップ仕様の要約(1.5.0、`markup_parser.rb` の `lines` 規則より)
6
+
7
+ ノードラベルの構造(順序固定):
8
+ `^`(三角) → 囲み `#`|`##`|`###` → `@色:` → 本文(装飾) … → 末尾に移動パス `+1`/`+>1`/`+<1`
9
+
10
+ - 囲み: `#`角括弧 / `##`矩形 / `###`二重矩形(**ノードのみ**)
11
+ - 色: `@name:` / `@#hex:`
12
+ - 移動パス: `+` `-`? (`>`|`<`)? digits(複数可)
13
+ - インライン装飾: `**bold**` `*italic*` `***bi***` / `=overline=` `-underline-` `~through~` / `__sup__` `_sub_` `___small___` / 図形 `|box|` `{circle}` `||` `{}` `|/|` `{/}` `--` `->` `<-` `<->` / 太線囲み `*〈shape〉*` / 区切り線 `---` `===` / `\n` / エスケープ `\`
14
+
15
+ 使用済み記号: `# ^ @ : + - > < * = ~ _ | { } [ ] ( ) \` +数字。
16
+ **未使用(衝突なし): `% & ! ? $ ;`**
17
+
18
+ ## 設計(決定: 案A、`%` を採用)
19
+
20
+ - **記法**: `[%@yellow:VP …]` → `%` が「領域シェード ON」、色は既存 `@色:` を流用。
21
+ - `lines` 規則に region 用プレフィックス(`%`)を `triangle`/`enclosure` と並べて追加(`%`.maybe.as(:region))。
22
+ - 色は既存 color_spec を再利用(重複文法を作らない)。`%` 単独なら既定色(薄いグレー)。
23
+ - **意味論**: 当該ノードが支配する**部分木全体**の背後に半透明矩形を描く。
24
+ - 範囲: x = ノードの left 〜 left+width(element は支配範囲幅 `@width` を保持)、y = ノードの y 〜 子孫の最大 y。
25
+ - z-order: 最背面(ツリー線・ラベルの下)。
26
+ - **バックエンド**: `svg_graph.rb`(rect fill-opacity)、`tikz_generator.rb`(\fill[opacity])、png 経路(rmagick)。の3つに描画を追加。
27
+
28
+ ## 触るファイル(見積り: 中)
29
+ - `markup_parser.rb`: `region` トークン追加、`parse` の results に `:region` 追加。
30
+ - `element.rb`: `region`/`region_color` 属性、子孫の y/x 範囲(bounding box)算出ヘルパ。
31
+ - `base_graph.rb` / `svg_graph.rb` / `tikz_generator.rb`: 最背面シェード描画。
32
+ - `string_parser.rb`: ノード属性として region を伝播(必要なら)。
33
+ - ドキュメント(`docs/documentation.md` ほか)・examples 追加。
34
+
35
+ ## 注意
36
+ - 隣接シェードが重なる場合の色合成(複数領域の入れ子)。半透明なら自然に重なる。
37
+ - LTR レイアウトでも bounding box 算出が成立するか確認。
38
+ - 実装は容認度研究のノート群が一段落してから着手(研究が主)。
39
+
40
+ ---
41
+
42
+ ## 実装記録(2026-06-25 完了)
43
+
44
+ 実装済み。設計(案A、`%` 採用)どおり。主な判断と差分:
45
+
46
+ - **色の意味論を明確化**: `%@色:` の色は**領域シェードの色**に束縛し、ノードのテキスト/線色とは独立させた。文法上は `region = '%' >> color_spec?` とし、その後ろに従来の `color_spec?` を別途残した。よって `%@yellow:@blue:VP` = 黄色の面+青のラベル。`%` 単独は既定の薄いグレー(`#888888` / opacity 0.18)。
47
+ - **PNG/PDF/JPG/GIF は SVG 由来**(`rsyntaxtree.rb` の `draw_png`/`draw_pdf` は `draw_svg` を経由、JPG/GIF は PNG 経由)。よって SVG に rect を入れるだけで全ラスタ/ベクタ形式に波及。提案の「png 経路(rmagick)に描画追加」は現状実装と乖離していたため**不要**と判断し、rmagick への直接描画は行っていない。
48
+ - **z-order**: 白背景 rect の直後・`@tree_data` の前に挿入(`@region_shades` バッファ)。transparent モードでも先頭に挿入。
49
+ - **bounding box**: `base_graph.rb#subtree_bounds(id)` を新設。レイアウト確定後(`finalize_ltr` 後)の `horizontal_indent`/`vertical_indent`/`content_*` を再帰で集約。node の `content_height` は `draw_element` 内で再計算されるため、シェード収集は `parse_list` 完了後(`svg_data` 内 `collect_region_shades`)に実行。TTB/LTR 両対応を確認済み。
50
+ - **TikZ**: `forest` の `fit to=tree` を背景レイヤー(`\scoped[on background layer]`)で使用。standalone 出力時のみ `\usetikzlibrary{backgrounds,fit}` を自動付加。HEX 色は `{rgb,255:...}` へ変換。**未確定事項**: 当環境に LaTeX 未インストールのため `fit to=tree` の実コンパイル検証は未実施。要、実機での確認。
51
+ - **LSIF**: node の `style.region`(`{color: ...}` または `null`)を追加。指定色の意図を記録し、白黒化(下記)は描画側のみ。
52
+ - **視認性改良(追加要望対応)**: 白地で薄い面が見にくい問題に対し、各面へ**同色だが不透明度を上げたボーダー**を付与(fill-opacity 0.2 / stroke-opacity 0.55、stroke-width=線幅+LINE_SCALING)。色名・HEX 問わず「濃い同系色ボーダー」になり暗色計算不要。TikZ も `draw=色, draw opacity` を付与。
53
+ - **白黒モードの色の扱い**: 当初「color オフ時はグレー強制」としたが、シェードも色指定可能で `@color:`(文字色は白黒でも色を honor)と非対称になるため、ユーザー判断で**「明示色は常に尊重・素の % のみ既定グレー・モード依存なし」**に確定。白黒図にしたい場合は素の % を使う。
54
+
55
+ ## 懸念対応(concerns 反映、2回目)
56
+
57
+ `/concerns` レビューで挙げた点を全て対応(TDD)。
58
+
59
+ - **TikZ 色名互換**: SVG は任意の CSS 色名を解釈できるが xcolor は限定的(`lightblue` 等が未定義→コンパイル不可)。`tikz_generator.rb` に **CSS 拡張色名148色テーブル `CSS_COLORS`** を追加し、色名・hex(3桁短縮含む)を**インライン rgb 式 `{rgb,255:...}` に解決**。未知名のみ素通し(best effort)。例064の `lightblue` も解決される。
60
+ - **上辺クリップ**: ルート/最上位ノードに領域を付けると面の上辺が viewBox(miny=0)外で切れていた。`collect_region_shades` で領域の和集合境界 `@region_bounds`(pad+ストローク半分込み)を記録し、`svg_data` で **viewBox/背景 rect/幅高さを領域込みに拡張**。
61
+ - **LSIF version**: `0.2.0`→`0.3.0`(`style.region` 追加の additive 変更を明示)。
62
+ - **`\%` エスケープ**: `markup_parser` の `escaped` 文字クラスに `%` 追加+`string_parser#get_next_token` の特殊文字 regex に `%` を追加(`\%` を `\%` のまま保持)。先頭リテラル `%` が出せるように。escape 表(`escape_char_table.html`)も更新。
63
+ - **未対応のまま**: TikZ `fit to=tree` の実 LaTeX コンパイル検証(環境に LaTeX 無し)。O(n²)(全ノード region 時のみ、実害なし)。symmetrize モードの明示テストは無し。
64
+ - テスト: 240 runs / 0 failures。
65
+ - **後方互換**: 先頭 `%` を予約。既存 examples に先頭 `%` の使用はなく破壊なし。`%` のエスケープ(`\%`)は未対応(必要になれば `escaped` ルールに `%` を追加)。
66
+ - **触ったファイル**: `markup_parser.rb`, `element.rb`, `base_graph.rb`, `svg_graph.rb`, `tikz_generator.rb`, `lsif_graph.rb`, tests(`markup_parser_test`/`node_styling_test`/`tikz_test`), `docs/_examples/064.md`, `docs/documentation.md`, `docs/documentation_ja.md`, `CHANGELOG.md`。`string_parser.rb` は変更不要だった(`%` は通常文字として透過)。
@@ -0,0 +1,25 @@
1
+ ---
2
+ name: "064"
3
+ caption: "Region shade for a c-command domain"
4
+ category: "Generative Grammar"
5
+ polyline: "off"
6
+ color: "modern"
7
+ symmetrization: "off"
8
+ connector: "auto"
9
+ connector_height: "2.0"
10
+ linewidth: "1"
11
+ hide_default_connectors: "off"
12
+ font: "Noto Serif"
13
+ ---
14
+ ```
15
+ [TP
16
+ [DP everyone]
17
+ [%@lightblue:T'
18
+ [T will]
19
+ [VP
20
+ [V praise]
21
+ [DP his_i_ friend]
22
+ ]
23
+ ]
24
+ ]
25
+ ```
@@ -18,6 +18,7 @@
18
18
  <tr><td><code>\=</code></td><td><code>=</code></td></tr>
19
19
  <tr><td><code>\~</code></td><td><code>~</code></td></tr>
20
20
  <tr><td><code>\|</code></td><td><code>|</code></td></tr>
21
+ <tr><td><code>\%</code></td><td><code>%</code></td></tr>
21
22
  <tr><td><code>\\</code></td><td><code>\</code></td></tr>
22
23
  <tr><td><code>\¥</code></td><td><code>¥</code></td></tr>
23
24
  <tr><td><code><></code></td><td>whitespace</td> </tr>
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -29,7 +29,7 @@
29
29
  </text>
30
30
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='17.599999999999994' y='238.5'><tspan x='17.599999999999994' y='238.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">John</tspan>
31
31
  </text>
32
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='283.6' y='238.5'><tspan x='283.6' y='238.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V'</tspan>
32
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='283.1' y='238.5'><tspan x='283.1' y='238.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V’</tspan>
33
33
  </text>
34
34
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='159.00000000000003' y='409.5'><tspan x='159.00000000000003' y='409.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V</tspan>
35
35
  </text>
@@ -41,7 +41,7 @@
41
41
  </text>
42
42
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='251.40000000000003' y='751.5'><tspan x='251.40000000000003' y='751.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">a<tspan style='fill:none;'>■</tspan>book</tspan>
43
43
  </text>
44
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='530.5' y='580.5'><tspan x='530.5' y='580.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V'</tspan>
44
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='530.0' y='580.5'><tspan x='530.0' y='580.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V’</tspan>
45
45
  </text>
46
46
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='458.30000000000007' y='751.5'><tspan x='458.30000000000007' y='751.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V</tspan>
47
47
  </text>
@@ -33,8 +33,8 @@
33
33
  </text>
34
34
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='17.599999999999994' y='409.5'><tspan x='17.599999999999994' y='409.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">John</tspan>
35
35
  </text>
36
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='301.7875' y='238.5'><tspan x='301.7875' y='238.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V'</tspan>
37
- <tspan x='330.7875' y='242.5' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">1</tspan>
36
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='301.2875' y='238.5'><tspan x='301.2875' y='238.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V’</tspan>
37
+ <tspan x='331.2875' y='242.5' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">1</tspan>
38
38
  </text>
39
39
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='159.00000000000003' y='409.5'><tspan x='159.00000000000003' y='409.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V</tspan>
40
40
  <tspan x='181.00000000000003' y='413.5' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">1</tspan>
@@ -49,8 +49,8 @@
49
49
  </text>
50
50
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='264.40000000000003' y='751.5'><tspan x='264.40000000000003' y='751.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">the<tspan style='fill:none;'>■</tspan>book</tspan>
51
51
  </text>
52
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='581.25' y='580.5'><tspan x='581.25' y='580.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V'</tspan>
53
- <tspan x='610.25' y='584.5' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">2</tspan>
52
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='580.75' y='580.5'><tspan x='580.75' y='580.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V’</tspan>
53
+ <tspan x='610.75' y='584.5' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">2</tspan>
54
54
  </text>
55
55
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='486.30000000000007' y='751.5'><tspan x='486.30000000000007' y='751.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V</tspan>
56
56
  <tspan x='508.30000000000007' y='755.5' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">2</tspan>
@@ -35,7 +35,7 @@
35
35
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='173.0' y='368.5'><tspan x='173.0' y='368.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Spec</tspan>
36
36
  <tspan x='246.0' y='372.5' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">1</tspan>
37
37
  </text>
38
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='369.1' y='368.5'><tspan x='369.1' y='368.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Y'</tspan>
38
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='368.6' y='368.5'><tspan x='368.6' y='368.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Y’</tspan>
39
39
  </text>
40
40
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='329.4' y='519.0'><tspan x='329.4' y='519.0' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">t</tspan>
41
41
  </text>
@@ -30,11 +30,11 @@
30
30
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='17.599999999999994' y='218.0'><tspan x='17.599999999999994' y='218.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Spec</tspan>
31
31
  <tspan x='90.6' y='222.0' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">2</tspan>
32
32
  </text>
33
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='291.725' y='218.0'><tspan x='291.725' y='218.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">𝑣'</tspan>
33
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='291.225' y='218.0'><tspan x='291.225' y='218.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">𝑣’</tspan>
34
34
  </text>
35
35
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='174.0' y='368.5'><tspan x='174.0' y='368.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Subj</tspan>
36
36
  </text>
37
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='394.95000000000005' y='368.5'><tspan x='394.95000000000005' y='368.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">𝑣'</tspan>
37
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='394.45000000000005' y='368.5'><tspan x='394.45000000000005' y='368.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">𝑣’</tspan>
38
38
  </text>
39
39
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='312.4' y='519.0'><tspan x='312.4' y='519.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Vb</tspan>
40
40
  </text>
@@ -32,9 +32,9 @@
32
32
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='17.600000000000023' y='413.5'><tspan x='17.600000000000023' y='413.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Specifier</tspan>
33
33
  <tspan x='38.10000000000002' y='460.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">指定部</tspan>
34
34
  </text>
35
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='541.625' y='240.5'><tspan x='541.625' y='240.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">X'</tspan>
35
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='541.125' y='240.5'><tspan x='541.125' y='240.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">X’</tspan>
36
36
  </text>
37
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='367.95000000000005' y='413.5'><tspan x='367.95000000000005' y='413.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">X'</tspan>
37
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='367.45000000000005' y='413.5'><tspan x='367.45000000000005' y='413.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">X’</tspan>
38
38
  </text>
39
39
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='261.50000000000006' y='586.5'><tspan x='261.50000000000006' y='586.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">X</tspan>
40
40
  </text>
@@ -31,7 +31,7 @@
31
31
  </text>
32
32
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='17.600000000000023' y='413.5'><tspan x='17.600000000000023' y='413.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">太郎が</tspan>
33
33
  </text>
34
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='669.3000000000001' y='240.5'><tspan x='669.3000000000001' y='240.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">𝑣'</tspan>
34
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='668.8000000000001' y='240.5'><tspan x='668.8000000000001' y='240.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">𝑣’</tspan>
35
35
  </text>
36
36
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='522.0000000000001' y='413.5'><tspan x='522.0000000000001' y='413.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">VP</tspan>
37
37
  </text>
@@ -41,7 +41,7 @@
41
41
  </text>
42
42
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='184.00000000000006' y='932.5'><tspan x='184.00000000000006' y='932.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">泥棒に</tspan>
43
43
  </text>
44
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='494.10000000000014' y='759.5'><tspan x='494.10000000000014' y='759.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">𝑣'</tspan>
44
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='493.60000000000014' y='759.5'><tspan x='493.60000000000014' y='759.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">𝑣’</tspan>
45
45
  </text>
46
46
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='408.4000000000001' y='932.5'><tspan x='408.4000000000001' y='932.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">VP</tspan>
47
47
  </text>
@@ -37,7 +37,7 @@
37
37
  </text>
38
38
  <text white-space='pre' alignment-baseline='text-top' style='fill: #009E73; storoke-width: 0; font-size: 32px;' x='110.99999999999991' y='451.5'><tspan x='110.99999999999991' y='451.5' style="font-weight: bold; fill: #D55E00; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">They</tspan>
39
39
  </text>
40
- <text white-space='pre' alignment-baseline='text-top' style='fill: #0072B2; storoke-width: 0; font-size: 32px;' x='433.9281249999999' y='368.5'><tspan x='433.9281249999999' y='368.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">T'</tspan>
40
+ <text white-space='pre' alignment-baseline='text-top' style='fill: #0072B2; storoke-width: 0; font-size: 32px;' x='432.9281249999999' y='368.5'><tspan x='432.9281249999999' y='368.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">T’</tspan>
41
41
  </text>
42
42
  <text white-space='pre' alignment-baseline='text-top' style='fill: #0072B2; storoke-width: 0; font-size: 32px;' x='282.89999999999986' y='519.0'><tspan x='282.89999999999986' y='519.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">T</tspan>
43
43
  </text>
@@ -49,7 +49,7 @@
49
49
  </text>
50
50
  <text white-space='pre' alignment-baseline='text-top' style='fill: #009E73; storoke-width: 0; font-size: 32px;' x='395.79999999999995' y='752.5'><tspan x='395.79999999999995' y='752.5' style="font-weight: bold; fill: #D55E00; " text-decoration="line-through" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">they</tspan>
51
51
  </text>
52
- <text white-space='pre' alignment-baseline='text-top' style='fill: #0072B2; storoke-width: 0; font-size: 32px;' x='761.1124999999998' y='669.5'><tspan x='761.1124999999998' y='669.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">v'</tspan>
52
+ <text white-space='pre' alignment-baseline='text-top' style='fill: #0072B2; storoke-width: 0; font-size: 32px;' x='760.1124999999998' y='669.5'><tspan x='760.1124999999998' y='669.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">v’</tspan>
53
53
  </text>
54
54
  <text white-space='pre' alignment-baseline='text-top' style='fill: #0072B2; storoke-width: 0; font-size: 32px;' x='587.1999999999999' y='820.0'><tspan x='587.1999999999999' y='820.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">v</tspan>
55
55
  </text>
@@ -62,7 +62,7 @@
62
62
  </text>
63
63
  <text white-space='pre' alignment-baseline='text-top' style='fill: #009E73; storoke-width: 0; font-size: 32px;' x='724.5999999999999' y='1053.5'><tspan x='724.5999999999999' y='1053.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">the<tspan style='fill:none;'>■</tspan>teacher</tspan>
64
64
  </text>
65
- <text white-space='pre' alignment-baseline='text-top' style='fill: #0072B2; storoke-width: 0; font-size: 32px;' x='1069.45' y='970.5'><tspan x='1069.45' y='970.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V'</tspan>
65
+ <text white-space='pre' alignment-baseline='text-top' style='fill: #0072B2; storoke-width: 0; font-size: 32px;' x='1068.95' y='970.5'><tspan x='1068.95' y='970.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V’</tspan>
66
66
  </text>
67
67
  <text white-space='pre' alignment-baseline='text-top' style='fill: #0072B2; storoke-width: 0; font-size: 32px;' x='987.9999999999999' y='1121.0'><tspan x='987.9999999999999' y='1121.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">V</tspan>
68
68
  </text>
@@ -31,9 +31,9 @@
31
31
  </text>
32
32
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='17.600000000000023' y='297.0'><tspan x='17.600000000000023' y='297.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Specifier</tspan>
33
33
  </text>
34
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='521.25' y='216.0'><tspan x='521.25' y='216.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">X'</tspan>
34
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='520.75' y='216.0'><tspan x='520.75' y='216.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">X’</tspan>
35
35
  </text>
36
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='352.20000000000005' y='364.5'><tspan x='352.20000000000005' y='364.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">X'</tspan>
36
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='351.70000000000005' y='364.5'><tspan x='351.70000000000005' y='364.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">X’</tspan>
37
37
  </text>
38
38
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='251.50000000000006' y='513.0'><tspan x='251.50000000000006' y='513.0' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">X</tspan>
39
39
  </text>
@@ -1,6 +1,6 @@
1
1
  <?xml version="1.0" standalone="no"?>
2
2
  <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
- <svg width="4294.2" height="867.375" viewBox="-17.6, 0, 4311.8, 878.625" version="1.1" xmlns="http://www.w3.org/2000/svg">
3
+ <svg width="4296.2" height="867.375" viewBox="-17.6, 0, 4313.8, 878.625" version="1.1" xmlns="http://www.w3.org/2000/svg">
4
4
  <defs>
5
5
  <marker id="arrow" markerUnits="userSpaceOnUse" viewBox="0 0 10 10" refX="10" refY="5" markerWidth="17.6" markerHeight="17.6" orient="auto">
6
6
  <path d="M 0 0 L 10 5 L 0 10" fill="black"/>
@@ -24,8 +24,8 @@
24
24
  <line x1="0" y="0" x2="0" y2="10" stroke="black" stroke-width="4"></line>
25
25
  </pattern>
26
26
  </defs>
27
- <rect x="-17.6" y="0" width="4311.8" height="878.625" stroke="none" fill="white" />"
28
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='1648.2749999999996' y='67.5'><tspan x='1648.2749999999996' y='67.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Major<tspan style='fill:none;'>■</tspan>clause<tspan style='fill:none;'>■</tspan>construction</tspan>
27
+ <rect x="-17.6" y="0" width="4313.8" height="878.625" stroke="none" fill="white" />"
28
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='1648.5249999999996' y='67.5'><tspan x='1648.5249999999996' y='67.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Major<tspan style='fill:none;'>■</tspan>clause<tspan style='fill:none;'>■</tspan>construction</tspan>
29
29
  </text>
30
30
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='17.59999999999991' y='283.5'><tspan x='17.59999999999991' y='283.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Declarative<tspan style='fill:none;'>■</tspan>clause<tspan style='fill:none;'>■</tspan>cxn</tspan>
31
31
  <tspan x='90.09999999999991' y='373.5' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">He<tspan style='fill:none;'>■</tspan>was<tspan style='fill:none;'>■</tspan>tired.</tspan>
@@ -54,25 +54,25 @@
54
54
  </text>
55
55
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='2508.5999999999995' y='283.5'><tspan x='2508.5999999999995' y='283.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Imperative<tspan style='fill:none;'>■</tspan>cxn</tspan>
56
56
  </text>
57
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='3358.95' y='283.5'><tspan x='3358.95' y='283.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Relative<tspan style='fill:none;'>■</tspan>clause<tspan style='fill:none;'>■</tspan>cxn</tspan>
57
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='3359.45' y='283.5'><tspan x='3359.45' y='283.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">Relative<tspan style='fill:none;'>■</tspan>clause<tspan style='fill:none;'>■</tspan>cxn</tspan>
58
58
  </text>
59
59
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='2821.9999999999995' y='499.5'><tspan x='2891.4999999999995' y='499.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">WH-subject<tspan style='fill:none;'>■</tspan>relative<tspan style='fill:none;'>■</tspan>clause<tspan style='fill:none;'>■</tspan>cxn</tspan>
60
60
  <tspan x='2821.9999999999995' y='589.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">The<tspan style='fill:none;'>■</tspan>emails,<tspan style='fill:none;'>■</tspan>which<tspan style='fill:none;'>■</tspan>arrived<tspan style='fill:none;'>■</tspan>overnight<tspan style='fill:none;'>■</tspan>...</tspan>
61
61
  </text>
62
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='3534.3999999999996' y='499.5'><tspan x='3606.3999999999996' y='499.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">WH-nonsubject<tspan style='fill:none;'>■</tspan>relative<tspan style='fill:none;'>■</tspan>clause<tspan style='fill:none;'>■</tspan>cxn</tspan>
63
- <tspan x='3534.3999999999996' y='589.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">A<tspan style='fill:none;'>■</tspan>pilot<tspan style='fill:none;'>■</tspan>shouldn't<tspan style='fill:none;'>■</tspan>be<tspan style='fill:none;'>■</tspan>tired,<tspan style='fill:none;'>■</tspan>which<tspan style='fill:none;'>■</tspan>Ben<tspan style='fill:none;'>■</tspan>was.</tspan>
64
- <tspan x='3635.3999999999996' y='634.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">The<tspan style='fill:none;'>■</tspan>mistalkes<tspan style='fill:none;'>■</tspan>that<tspan style='fill:none;'>■</tspan>he<tspan style='fill:none;'>■</tspan>made<tspan style='fill:none;'>■</tspan>...</tspan>
62
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='3534.3999999999996' y='499.5'><tspan x='3607.3999999999996' y='499.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">WH-nonsubject<tspan style='fill:none;'>■</tspan>relative<tspan style='fill:none;'>■</tspan>clause<tspan style='fill:none;'>■</tspan>cxn</tspan>
63
+ <tspan x='3534.3999999999996' y='589.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">A<tspan style='fill:none;'>■</tspan>pilot<tspan style='fill:none;'>■</tspan>shouldnt<tspan style='fill:none;'>■</tspan>be<tspan style='fill:none;'>■</tspan>tired,<tspan style='fill:none;'>■</tspan>which<tspan style='fill:none;'>■</tspan>Ben<tspan style='fill:none;'>■</tspan>was.</tspan>
64
+ <tspan x='3636.3999999999996' y='634.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">The<tspan style='fill:none;'>■</tspan>mistalkes<tspan style='fill:none;'>■</tspan>that<tspan style='fill:none;'>■</tspan>he<tspan style='fill:none;'>■</tspan>made<tspan style='fill:none;'>■</tspan>...</tspan>
65
65
  </text>
66
66
  <polyline style='stroke:black; stroke-width:2; fill:none; stroke-linejoin:round; stroke-linecap:round;'
67
- points='199.0999999999999 227.25 199.0999999999999 161.4375 1857.2749999999996 161.4375 1857.2749999999996 95.625' />
67
+ points='199.0999999999999 227.25 199.0999999999999 161.4375 1857.5249999999996 161.4375 1857.5249999999996 95.625' />
68
68
  <polyline style='stroke:black; stroke-width:2; fill:none; stroke-linejoin:round; stroke-linecap:round;'
69
- points='1027.3 227.25 1027.3 161.4375 1857.2749999999996 161.4375 1857.2749999999996 95.625' />
69
+ points='1027.3 227.25 1027.3 161.4375 1857.5249999999996 161.4375 1857.5249999999996 95.625' />
70
70
  <polyline style='stroke:black; stroke-width:2; fill:none; stroke-linejoin:round; stroke-linecap:round;'
71
- points='2238.2 227.25 2238.2 161.4375 1857.2749999999996 161.4375 1857.2749999999996 95.625' />
71
+ points='2238.2 227.25 2238.2 161.4375 1857.5249999999996 161.4375 1857.5249999999996 95.625' />
72
72
  <polyline style='stroke:black; stroke-width:2; fill:none; stroke-linejoin:round; stroke-linecap:round;'
73
- points='2630.0999999999995 227.25 2630.0999999999995 161.4375 1857.2749999999996 161.4375 1857.2749999999996 95.625' />
73
+ points='2630.0999999999995 227.25 2630.0999999999995 161.4375 1857.5249999999996 161.4375 1857.5249999999996 95.625' />
74
74
  <polyline style='stroke:black; stroke-width:2; fill:none; stroke-linejoin:round; stroke-linecap:round;'
75
- points='3515.45 227.25 3515.45 161.4375 1857.2749999999996 161.4375 1857.2749999999996 95.625' />
75
+ points='3515.95 227.25 3515.95 161.4375 1857.5249999999996 161.4375 1857.5249999999996 95.625' />
76
76
  <polyline style='stroke:black; stroke-width:2; fill:none; stroke-linejoin:round; stroke-linecap:round;'
77
77
  points='638.0 443.25 638.0 377.4375 1027.3 377.4375 1027.3 311.625' />
78
78
  <polyline style='stroke:black; stroke-width:2; fill:none; stroke-linejoin:round; stroke-linecap:round;'
@@ -84,13 +84,13 @@
84
84
  <polyline style='stroke:black; stroke-width:2; fill:none; stroke-linejoin:round; stroke-linecap:round;'
85
85
  points='1702.3 659.25 1702.3 593.4375 1416.6 593.4375 1416.6 527.625' />
86
86
  <polyline style='stroke:black; stroke-width:2; fill:none; stroke-linejoin:round; stroke-linecap:round;'
87
- points='3142.9999999999995 443.25 3142.9999999999995 377.4375 3515.45 377.4375 3515.45 311.625' />
87
+ points='3142.9999999999995 443.25 3142.9999999999995 377.4375 3515.95 377.4375 3515.95 311.625' />
88
88
  <polyline style='stroke:black; stroke-width:2; fill:none; stroke-linejoin:round; stroke-linecap:round;'
89
- points='3887.8999999999996 443.25 3887.8999999999996 377.4375 3515.45 377.4375 3515.45 311.625' />
89
+ points='3888.8999999999996 443.25 3888.8999999999996 377.4375 3515.95 377.4375 3515.95 311.625' />
90
90
  <line style="stroke:black; fill:none; stroke-linecap:round; stroke-width:2; " x1="17.59999999999991" y1="317.25" x2="380.5999999999999" y2="317.25"></line>
91
91
  <line style="stroke:black; fill:none; stroke-linecap:round; stroke-width:2; " x1="451.0" y1="749.25" x2="825.0" y2="749.25"></line>
92
92
  <line style="stroke:black; fill:none; stroke-linecap:round; stroke-width:2; " x1="895.4000000000001" y1="749.25" x2="1366.4" y2="749.25"></line>
93
93
  <line style="stroke:black; fill:none; stroke-linecap:round; stroke-width:2; " x1="1436.8" y1="749.25" x2="1967.8" y2="749.25"></line>
94
94
  <line style="stroke:black; fill:none; stroke-linecap:round; stroke-width:2; " x1="2038.1999999999998" y1="317.25" x2="2438.2" y2="317.25"></line>
95
95
  <line style="stroke:black; fill:none; stroke-linecap:round; stroke-width:2; " x1="2821.9999999999995" y1="533.25" x2="3463.9999999999995" y2="533.25"></line>
96
- <line style="stroke:black; fill:none; stroke-linecap:round; stroke-width:2; " x1="3534.3999999999996" y1="533.25" x2="4241.4" y2="533.25"></line></svg>
96
+ <line style="stroke:black; fill:none; stroke-linecap:round; stroke-width:2; " x1="3534.3999999999996" y1="533.25" x2="4243.4" y2="533.25"></line></svg>
@@ -32,7 +32,7 @@
32
32
  </text>
33
33
  <text white-space='pre' alignment-baseline='text-top' style='fill: #009E73; storoke-width: 0; font-size: 32px;' x='17.599999999999994' y='409.5'><tspan x='17.599999999999994' y='409.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">John</tspan>
34
34
  </text>
35
- <text white-space='pre' alignment-baseline='text-top' style='fill: #0072B2; storoke-width: 0; font-size: 32px;' x='338.996875' y='238.5'><tspan x='338.996875' y='238.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">T'</tspan>
35
+ <text white-space='pre' alignment-baseline='text-top' style='fill: #0072B2; storoke-width: 0; font-size: 32px;' x='338.496875' y='238.5'><tspan x='338.496875' y='238.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">T’</tspan>
36
36
  </text>
37
37
  <text white-space='pre' alignment-baseline='text-top' style='fill: #0072B2; storoke-width: 0; font-size: 32px;' x='175.99999999999997' y='409.5'><tspan x='175.99999999999997' y='409.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">T</tspan>
38
38
  <tspan x='195.99999999999997' y='399.25' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">0</tspan>
@@ -52,7 +52,7 @@
52
52
  </text>
53
53
  <text white-space='pre' alignment-baseline='text-top' style='fill: #009E73; storoke-width: 0; font-size: 32px;' x='491.79999999999995' y='922.5'><tspan x='491.79999999999995' y='922.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">himself</tspan>
54
54
  </text>
55
- <text white-space='pre' alignment-baseline='text-top' style='fill: #0072B2; storoke-width: 0; font-size: 32px;' x='768.375' y='751.5'><tspan x='768.375' y='751.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">T'</tspan>
55
+ <text white-space='pre' alignment-baseline='text-top' style='fill: #0072B2; storoke-width: 0; font-size: 32px;' x='767.875' y='751.5'><tspan x='767.875' y='751.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">T’</tspan>
56
56
  </text>
57
57
  <text white-space='pre' alignment-baseline='text-top' style='fill: #0072B2; storoke-width: 0; font-size: 32px;' x='679.2' y='922.5'><tspan x='679.2' y='922.5' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">T</tspan>
58
58
  <tspan x='699.2' y='912.25' style="font-size: 70%; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">0</tspan>
@@ -67,7 +67,7 @@
67
67
  </text>
68
68
  <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='1002.0' y='1163.25'><tspan x='1002.0' y='1163.25' style="" text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">WH-nonsubject<tspan style='fill:none;'>■</tspan>relative<tspan style='fill:none;'>■</tspan>clause<tspan style='fill:none;'>■</tspan>cxn</tspan>
69
69
  </text>
70
- <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='1700.5' y='1140.75'><tspan x='1700.5' y='1140.75' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">A<tspan style='fill:none;'>■</tspan>pilot<tspan style='fill:none;'>■</tspan>shouldn't<tspan style='fill:none;'>■</tspan>be<tspan style='fill:none;'>■</tspan>tired,<tspan style='fill:none;'>■</tspan>which<tspan style='fill:none;'>■</tspan>Ben<tspan style='fill:none;'>■</tspan>was.</tspan>
70
+ <text white-space='pre' alignment-baseline='text-top' style='fill: black; storoke-width: 0; font-size: 32px;' x='1700.5' y='1140.75'><tspan x='1700.5' y='1140.75' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">A<tspan style='fill:none;'>■</tspan>pilot<tspan style='fill:none;'>■</tspan>shouldnt<tspan style='fill:none;'>■</tspan>be<tspan style='fill:none;'>■</tspan>tired,<tspan style='fill:none;'>■</tspan>which<tspan style='fill:none;'>■</tspan>Ben<tspan style='fill:none;'>■</tspan>was.</tspan>
71
71
  <tspan x='1700.5' y='1185.75' style="font-style: italic; " text-decoration="" font-family="'Noto Serif', 'Noto Serif JP', OpenMoji, 'OpenMoji Color', 'OpenMoji Black', serif">The<tspan style='fill:none;'>■</tspan>mistakes<tspan style='fill:none;'>■</tspan>that<tspan style='fill:none;'>■</tspan>he<tspan style='fill:none;'>■</tspan>made<tspan style='fill:none;'>■</tspan>...</tspan>
72
72
  </text>
73
73
  <polyline style='stroke:black; stroke-width:2; fill:none; stroke-linejoin:round; stroke-linecap:round;'