Sevgi

#!/usr/bin/env -S ruby -S sevgi
# Example taken from: https://svg-tutorial.com/svg/use

SVG :minimal, width: 200, height: 200, viewBox: "-100 -100 200 200" do
  path id: "branch", stroke: "#e5c39c", "stroke-width": 5, d: <<~'PATH'
    M 0 0 L 0 -90
    M 0 -20 L 20 -34
    M 0 -20 L -20 -34
    M 0 -40 L 20 -54
    M 0 -40 L -20 -54
    M 0 -60 L 20 -74
    M 0 -60 L -20 -74
  PATH

  60.step(300, 60) { use(href: "#branch").Rotate(it) }
end.Save

<svg width="200" height="200" viewBox="-100 -100 200 200">
  <path
    id="branch"
    stroke="#e5c39c"
    stroke-width="5"
    d="M 0 0 L 0 -90
M 0 -20 L 20 -34
M 0 -20 L -20 -34
M 0 -40 L 20 -54
M 0 -40 L -20 -54
M 0 -60 L 20 -74
M 0 -60 L -20 -74
"
  />
  <use href="#branch" transform="rotate(60)"/>
  <use href="#branch" transform="rotate(120)"/>
  <use href="#branch" transform="rotate(180)"/>
  <use href="#branch" transform="rotate(240)"/>
  <use href="#branch" transform="rotate(300)"/>
</svg>

#!/usr/bin/env -S ruby -S sevgi

SVG :minimal, width: 200, height: 100 do
  rect id: "frame", width: 200, height: 100, rx: 5, fill: "#666"

  circle id: "head", cx: 80, cy: 50, r: 40, fill: "yellow"
  circle id: "eye", cx: 90, cy: 28, r: 6, fill: "black"
  polygon id: "mouth", points: %w[ 80,50 120,20 120,80 ], fill: "#666"

  symbol id: "dot" do
    circle cx: 120, cy: 50, r: 6, fill: "#800080"
  end
  g id: "dots" do
    TileX "dot", n: 3, d: 18
  end
end.Save

<svg width="200" height="100">
  <rect id="frame" width="200" height="100" rx="5" fill="#666"/>
  <circle id="head" cx="80" cy="50" r="40" fill="yellow"/>
  <circle id="eye" cx="90" cy="28" r="6" fill="black"/>
  <polygon id="mouth" points="80,50 120,20 120,80" fill="#666"/>
  <symbol id="dot">
    <circle cx="120" cy="50" r="6" fill="#800080"/>
  </symbol>
  <g id="dots">
    <use id="dot-1" href="#dot" class="tile-col-1 tile-col-first"/>
    <use id="dot-2" href="#dot" class="tile-col-2" x="18"/>
    <use id="dot-3" href="#dot" class="tile-col-3 tile-col-last" x="36"/>
  </g>
</svg>

#!/usr/bin/env -S ruby -S sevgi
# frozen_string_literal: true

SVG width: 100, height: 100 do
  rect x: 0, y: 0, width: 100, height: 100, fill: "white"
  circle cx: 50, cy: 50, r: 40, fill: "#800080"
  rect x: 10, y: 50, width: 80, height: 50, fill: "#800080"

  [ 25, 50 ].each do |x|
    circle cx: x, cy: 40, r: 8, fill: "white"
  end

  path fill: "white", d: %w[
    M11 100 l13 -15 l13 15 l13 -15
    l13 15 l13 -15 l13 15 Z
  ]
end.Save

<?xml version="1.0" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">
  <rect x="0" y="0" width="100" height="100" fill="white"/>
  <circle cx="50" cy="50" r="40" fill="#800080"/>
  <rect x="10" y="50" width="80" height="50" fill="#800080"/>
  <circle cx="25" cy="40" r="8" fill="white"/>
  <circle cx="50" cy="40" r="8" fill="white"/>
  <path fill="white" d="M11 100 l13 -15 l13 15 l13 -15 l13 15 l13 -15 l13 15 Z"/>
</svg>

 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
#!/usr/bin/env -S ruby -S sevgi

WIDTH   = 20
HEIGHT  = 150
ENSPACE = ""

STYLE = {
  ".labels": { font:   "3pt monospace"                               },
  ".majors": { stroke: "#800080", "stroke-width": 0.2                },
  ".halves": { stroke: "#800080", "stroke-width": 0.1                },
  ".minors": { stroke: "#800080", "stroke-width": 0.1                },
  ".frame":  { stroke: "#800080", "stroke-width": 0.05, fill: "none" }
}

SVG :inkscape, :a4 do
  css STYLE

  rect id: "frame", width: WIDTH, height: HEIGHT, class: "frame"

  layer id: "minors" do
    length = 2

    (0..HEIGHT).step(1) do |y|
      hline x: 0, y: y, length: length, class: "minors"
      hline x: WIDTH, y: y, length: -length, class: "minors"
    end
  end

  layer id: "halves" do
    length = 4

    (0..HEIGHT).step(5) do |y|
      hline x: 0, y: y, length: length, class: "halves"
      hline x: WIDTH, y: y, length: -length, class: "halves"
    end
  end

  layer id: "majors" do
    length = 6

    (10..HEIGHT - 10).step(10) do |y|
      hline x: 0, y: y, length: length, class: "majors"
      hline x: WIDTH, y: y, length: -length, class: "majors"
    end

    layer id: "labels" do
      [
        3.5,
        *(10..HEIGHT - 10).step(10).to_a.map { _1 + 1.4 },
        HEIGHT - 1
      ].each_with_index do |y, i|
        text "#{i.to_s.rjust(2, ENSPACE)}", x: length + 1.4, y: y, class: "labels"
      end
    end
  end
end.Save

<?xml version="1.0" standalone="no"?>
<svg
  xmlns="http://www.w3.org/2000/svg"
  xmlns:_="http://sevgi.roktas.dev"
  xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
  xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
  shape-rendering="crispEdges"
  width="210.0mm"
  height="297.0mm"
  viewBox="0 0 210 297"
>
  <style type="text/css">
    <![CDATA[
      .labels {
        font: 3pt monospace;
      }
      .majors {
        stroke: #800080;
        stroke-width: 0.2;
      }
      .halves {
        stroke: #800080;
        stroke-width: 0.1;
      }
      .minors {
        stroke: #800080;
        stroke-width: 0.1;
      }
      .frame {
        stroke: #800080;
        stroke-width: 0.05;
        fill: none;
      }
    ]]>
  </style>
  <rect id="frame" width="20" height="150" class="frame"/>
  <g id="minors" inkscape:groupmode="layer">
    <path d="M 0 0 h 2" class="minors"/>
    <path d="M 20 0 h -2" class="minors"/>
    <path d="M 0 1 h 2" class="minors"/>
    <path d="M 20 1 h -2" class="minors"/>
    <path d="M 0 2 h 2" class="minors"/>
    <path d="M 20 2 h -2" class="minors"/>
    <path d="M 0 3 h 2" class="minors"/>
    <path d="M 20 3 h -2" class="minors"/>
    <path d="M 0 4 h 2" class="minors"/>
    <path d="M 20 4 h -2" class="minors"/>
    <path d="M 0 5 h 2" class="minors"/>
    <path d="M 20 5 h -2" class="minors"/>
    <path d="M 0 6 h 2" class="minors"/>
    <path d="M 20 6 h -2" class="minors"/>
    <path d="M 0 7 h 2" class="minors"/>
    <path d="M 20 7 h -2" class="minors"/>
    <path d="M 0 8 h 2" class="minors"/>
    <path d="M 20 8 h -2" class="minors"/>
    <path d="M 0 9 h 2" class="minors"/>
    <path d="M 20 9 h -2" class="minors"/>
    <path d="M 0 10 h 2" class="minors"/>
    <path d="M 20 10 h -2" class="minors"/>
    <path d="M 0 11 h 2" class="minors"/>
    <path d="M 20 11 h -2" class="minors"/>
    <path d="M 0 12 h 2" class="minors"/>
    <path d="M 20 12 h -2" class="minors"/>
    <path d="M 0 13 h 2" class="minors"/>
    <path d="M 20 13 h -2" class="minors"/>
    <path d="M 0 14 h 2" class="minors"/>
    <path d="M 20 14 h -2" class="minors"/>
    <path d="M 0 15 h 2" class="minors"/>
    <path d="M 20 15 h -2" class="minors"/>
    <path d="M 0 16 h 2" class="minors"/>
    <path d="M 20 16 h -2" class="minors"/>
    <path d="M 0 17 h 2" class="minors"/>
    <path d="M 20 17 h -2" class="minors"/>
    <path d="M 0 18 h 2" class="minors"/>
    <path d="M 20 18 h -2" class="minors"/>
    <path d="M 0 19 h 2" class="minors"/>
    <path d="M 20 19 h -2" class="minors"/>
    <path d="M 0 20 h 2" class="minors"/>
    <path d="M 20 20 h -2" class="minors"/>
    <path d="M 0 21 h 2" class="minors"/>
    <path d="M 20 21 h -2" class="minors"/>
    <path d="M 0 22 h 2" class="minors"/>
    <path d="M 20 22 h -2" class="minors"/>
    <path d="M 0 23 h 2" class="minors"/>
    <path d="M 20 23 h -2" class="minors"/>
    <path d="M 0 24 h 2" class="minors"/>
    <path d="M 20 24 h -2" class="minors"/>
    <path d="M 0 25 h 2" class="minors"/>
    <path d="M 20 25 h -2" class="minors"/>
    <path d="M 0 26 h 2" class="minors"/>
    <path d="M 20 26 h -2" class="minors"/>
    <path d="M 0 27 h 2" class="minors"/>
    <path d="M 20 27 h -2" class="minors"/>
    <path d="M 0 28 h 2" class="minors"/>
    <path d="M 20 28 h -2" class="minors"/>
    <path d="M 0 29 h 2" class="minors"/>
    <path d="M 20 29 h -2" class="minors"/>
    <path d="M 0 30 h 2" class="minors"/>
    <path d="M 20 30 h -2" class="minors"/>
    <path d="M 0 31 h 2" class="minors"/>
    <path d="M 20 31 h -2" class="minors"/>
    <path d="M 0 32 h 2" class="minors"/>
    <path d="M 20 32 h -2" class="minors"/>
    <path d="M 0 33 h 2" class="minors"/>
    <path d="M 20 33 h -2" class="minors"/>
    <path d="M 0 34 h 2" class="minors"/>
    <path d="M 20 34 h -2" class="minors"/>
    <path d="M 0 35 h 2" class="minors"/>
    <path d="M 20 35 h -2" class="minors"/>
    <path d="M 0 36 h 2" class="minors"/>
    <path d="M 20 36 h -2" class="minors"/>
    <path d="M 0 37 h 2" class="minors"/>
    <path d="M 20 37 h -2" class="minors"/>
    <path d="M 0 38 h 2" class="minors"/>
    <path d="M 20 38 h -2" class="minors"/>
    <path d="M 0 39 h 2" class="minors"/>
    <path d="M 20 39 h -2" class="minors"/>
    <path d="M 0 40 h 2" class="minors"/>
    <path d="M 20 40 h -2" class="minors"/>
    <path d="M 0 41 h 2" class="minors"/>
    <path d="M 20 41 h -2" class="minors"/>
    <path d="M 0 42 h 2" class="minors"/>
    <path d="M 20 42 h -2" class="minors"/>
    <path d="M 0 43 h 2" class="minors"/>
    <path d="M 20 43 h -2" class="minors"/>
    <path d="M 0 44 h 2" class="minors"/>
    <path d="M 20 44 h -2" class="minors"/>
    <path d="M 0 45 h 2" class="minors"/>
    <path d="M 20 45 h -2" class="minors"/>
    <path d="M 0 46 h 2" class="minors"/>
    <path d="M 20 46 h -2" class="minors"/>
    <path d="M 0 47 h 2" class="minors"/>
    <path d="M 20 47 h -2" class="minors"/>
    <path d="M 0 48 h 2" class="minors"/>
    <path d="M 20 48 h -2" class="minors"/>
    <path d="M 0 49 h 2" class="minors"/>
    <path d="M 20 49 h -2" class="minors"/>
    <path d="M 0 50 h 2" class="minors"/>
    <path d="M 20 50 h -2" class="minors"/>
    <path d="M 0 51 h 2" class="minors"/>
    <path d="M 20 51 h -2" class="minors"/>
    <path d="M 0 52 h 2" class="minors"/>
    <path d="M 20 52 h -2" class="minors"/>
    <path d="M 0 53 h 2" class="minors"/>
    <path d="M 20 53 h -2" class="minors"/>
    <path d="M 0 54 h 2" class="minors"/>
    <path d="M 20 54 h -2" class="minors"/>
    <path d="M 0 55 h 2" class="minors"/>
    <path d="M 20 55 h -2" class="minors"/>
    <path d="M 0 56 h 2" class="minors"/>
    <path d="M 20 56 h -2" class="minors"/>
    <path d="M 0 57 h 2" class="minors"/>
    <path d="M 20 57 h -2" class="minors"/>
    <path d="M 0 58 h 2" class="minors"/>
    <path d="M 20 58 h -2" class="minors"/>
    <path d="M 0 59 h 2" class="minors"/>
    <path d="M 20 59 h -2" class="minors"/>
    <path d="M 0 60 h 2" class="minors"/>
    <path d="M 20 60 h -2" class="minors"/>
    <path d="M 0 61 h 2" class="minors"/>
    <path d="M 20 61 h -2" class="minors"/>
    <path d="M 0 62 h 2" class="minors"/>
    <path d="M 20 62 h -2" class="minors"/>
    <path d="M 0 63 h 2" class="minors"/>
    <path d="M 20 63 h -2" class="minors"/>
    <path d="M 0 64 h 2" class="minors"/>
    <path d="M 20 64 h -2" class="minors"/>
    <path d="M 0 65 h 2" class="minors"/>
    <path d="M 20 65 h -2" class="minors"/>
    <path d="M 0 66 h 2" class="minors"/>
    <path d="M 20 66 h -2" class="minors"/>
    <path d="M 0 67 h 2" class="minors"/>
    <path d="M 20 67 h -2" class="minors"/>
    <path d="M 0 68 h 2" class="minors"/>
    <path d="M 20 68 h -2" class="minors"/>
    <path d="M 0 69 h 2" class="minors"/>
    <path d="M 20 69 h -2" class="minors"/>
    <path d="M 0 70 h 2" class="minors"/>
    <path d="M 20 70 h -2" class="minors"/>
    <path d="M 0 71 h 2" class="minors"/>
    <path d="M 20 71 h -2" class="minors"/>
    <path d="M 0 72 h 2" class="minors"/>
    <path d="M 20 72 h -2" class="minors"/>
    <path d="M 0 73 h 2" class="minors"/>
    <path d="M 20 73 h -2" class="minors"/>
    <path d="M 0 74 h 2" class="minors"/>
    <path d="M 20 74 h -2" class="minors"/>
    <path d="M 0 75 h 2" class="minors"/>
    <path d="M 20 75 h -2" class="minors"/>
    <path d="M 0 76 h 2" class="minors"/>
    <path d="M 20 76 h -2" class="minors"/>
    <path d="M 0 77 h 2" class="minors"/>
    <path d="M 20 77 h -2" class="minors"/>
    <path d="M 0 78 h 2" class="minors"/>
    <path d="M 20 78 h -2" class="minors"/>
    <path d="M 0 79 h 2" class="minors"/>
    <path d="M 20 79 h -2" class="minors"/>
    <path d="M 0 80 h 2" class="minors"/>
    <path d="M 20 80 h -2" class="minors"/>
    <path d="M 0 81 h 2" class="minors"/>
    <path d="M 20 81 h -2" class="minors"/>
    <path d="M 0 82 h 2" class="minors"/>
    <path d="M 20 82 h -2" class="minors"/>
    <path d="M 0 83 h 2" class="minors"/>
    <path d="M 20 83 h -2" class="minors"/>
    <path d="M 0 84 h 2" class="minors"/>
    <path d="M 20 84 h -2" class="minors"/>
    <path d="M 0 85 h 2" class="minors"/>
    <path d="M 20 85 h -2" class="minors"/>
    <path d="M 0 86 h 2" class="minors"/>
    <path d="M 20 86 h -2" class="minors"/>
    <path d="M 0 87 h 2" class="minors"/>
    <path d="M 20 87 h -2" class="minors"/>
    <path d="M 0 88 h 2" class="minors"/>
    <path d="M 20 88 h -2" class="minors"/>
    <path d="M 0 89 h 2" class="minors"/>
    <path d="M 20 89 h -2" class="minors"/>
    <path d="M 0 90 h 2" class="minors"/>
    <path d="M 20 90 h -2" class="minors"/>
    <path d="M 0 91 h 2" class="minors"/>
    <path d="M 20 91 h -2" class="minors"/>
    <path d="M 0 92 h 2" class="minors"/>
    <path d="M 20 92 h -2" class="minors"/>
    <path d="M 0 93 h 2" class="minors"/>
    <path d="M 20 93 h -2" class="minors"/>
    <path d="M 0 94 h 2" class="minors"/>
    <path d="M 20 94 h -2" class="minors"/>
    <path d="M 0 95 h 2" class="minors"/>
    <path d="M 20 95 h -2" class="minors"/>
    <path d="M 0 96 h 2" class="minors"/>
    <path d="M 20 96 h -2" class="minors"/>
    <path d="M 0 97 h 2" class="minors"/>
    <path d="M 20 97 h -2" class="minors"/>
    <path d="M 0 98 h 2" class="minors"/>
    <path d="M 20 98 h -2" class="minors"/>
    <path d="M 0 99 h 2" class="minors"/>
    <path d="M 20 99 h -2" class="minors"/>
    <path d="M 0 100 h 2" class="minors"/>
    <path d="M 20 100 h -2" class="minors"/>
    <path d="M 0 101 h 2" class="minors"/>
    <path d="M 20 101 h -2" class="minors"/>
    <path d="M 0 102 h 2" class="minors"/>
    <path d="M 20 102 h -2" class="minors"/>
    <path d="M 0 103 h 2" class="minors"/>
    <path d="M 20 103 h -2" class="minors"/>
    <path d="M 0 104 h 2" class="minors"/>
    <path d="M 20 104 h -2" class="minors"/>
    <path d="M 0 105 h 2" class="minors"/>
    <path d="M 20 105 h -2" class="minors"/>
    <path d="M 0 106 h 2" class="minors"/>
    <path d="M 20 106 h -2" class="minors"/>
    <path d="M 0 107 h 2" class="minors"/>
    <path d="M 20 107 h -2" class="minors"/>
    <path d="M 0 108 h 2" class="minors"/>
    <path d="M 20 108 h -2" class="minors"/>
    <path d="M 0 109 h 2" class="minors"/>
    <path d="M 20 109 h -2" class="minors"/>
    <path d="M 0 110 h 2" class="minors"/>
    <path d="M 20 110 h -2" class="minors"/>
    <path d="M 0 111 h 2" class="minors"/>
    <path d="M 20 111 h -2" class="minors"/>
    <path d="M 0 112 h 2" class="minors"/>
    <path d="M 20 112 h -2" class="minors"/>
    <path d="M 0 113 h 2" class="minors"/>
    <path d="M 20 113 h -2" class="minors"/>
    <path d="M 0 114 h 2" class="minors"/>
    <path d="M 20 114 h -2" class="minors"/>
    <path d="M 0 115 h 2" class="minors"/>
    <path d="M 20 115 h -2" class="minors"/>
    <path d="M 0 116 h 2" class="minors"/>
    <path d="M 20 116 h -2" class="minors"/>
    <path d="M 0 117 h 2" class="minors"/>
    <path d="M 20 117 h -2" class="minors"/>
    <path d="M 0 118 h 2" class="minors"/>
    <path d="M 20 118 h -2" class="minors"/>
    <path d="M 0 119 h 2" class="minors"/>
    <path d="M 20 119 h -2" class="minors"/>
    <path d="M 0 120 h 2" class="minors"/>
    <path d="M 20 120 h -2" class="minors"/>
    <path d="M 0 121 h 2" class="minors"/>
    <path d="M 20 121 h -2" class="minors"/>
    <path d="M 0 122 h 2" class="minors"/>
    <path d="M 20 122 h -2" class="minors"/>
    <path d="M 0 123 h 2" class="minors"/>
    <path d="M 20 123 h -2" class="minors"/>
    <path d="M 0 124 h 2" class="minors"/>
    <path d="M 20 124 h -2" class="minors"/>
    <path d="M 0 125 h 2" class="minors"/>
    <path d="M 20 125 h -2" class="minors"/>
    <path d="M 0 126 h 2" class="minors"/>
    <path d="M 20 126 h -2" class="minors"/>
    <path d="M 0 127 h 2" class="minors"/>
    <path d="M 20 127 h -2" class="minors"/>
    <path d="M 0 128 h 2" class="minors"/>
    <path d="M 20 128 h -2" class="minors"/>
    <path d="M 0 129 h 2" class="minors"/>
    <path d="M 20 129 h -2" class="minors"/>
    <path d="M 0 130 h 2" class="minors"/>
    <path d="M 20 130 h -2" class="minors"/>
    <path d="M 0 131 h 2" class="minors"/>
    <path d="M 20 131 h -2" class="minors"/>
    <path d="M 0 132 h 2" class="minors"/>
    <path d="M 20 132 h -2" class="minors"/>
    <path d="M 0 133 h 2" class="minors"/>
    <path d="M 20 133 h -2" class="minors"/>
    <path d="M 0 134 h 2" class="minors"/>
    <path d="M 20 134 h -2" class="minors"/>
    <path d="M 0 135 h 2" class="minors"/>
    <path d="M 20 135 h -2" class="minors"/>
    <path d="M 0 136 h 2" class="minors"/>
    <path d="M 20 136 h -2" class="minors"/>
    <path d="M 0 137 h 2" class="minors"/>
    <path d="M 20 137 h -2" class="minors"/>
    <path d="M 0 138 h 2" class="minors"/>
    <path d="M 20 138 h -2" class="minors"/>
    <path d="M 0 139 h 2" class="minors"/>
    <path d="M 20 139 h -2" class="minors"/>
    <path d="M 0 140 h 2" class="minors"/>
    <path d="M 20 140 h -2" class="minors"/>
    <path d="M 0 141 h 2" class="minors"/>
    <path d="M 20 141 h -2" class="minors"/>
    <path d="M 0 142 h 2" class="minors"/>
    <path d="M 20 142 h -2" class="minors"/>
    <path d="M 0 143 h 2" class="minors"/>
    <path d="M 20 143 h -2" class="minors"/>
    <path d="M 0 144 h 2" class="minors"/>
    <path d="M 20 144 h -2" class="minors"/>
    <path d="M 0 145 h 2" class="minors"/>
    <path d="M 20 145 h -2" class="minors"/>
    <path d="M 0 146 h 2" class="minors"/>
    <path d="M 20 146 h -2" class="minors"/>
    <path d="M 0 147 h 2" class="minors"/>
    <path d="M 20 147 h -2" class="minors"/>
    <path d="M 0 148 h 2" class="minors"/>
    <path d="M 20 148 h -2" class="minors"/>
    <path d="M 0 149 h 2" class="minors"/>
    <path d="M 20 149 h -2" class="minors"/>
    <path d="M 0 150 h 2" class="minors"/>
    <path d="M 20 150 h -2" class="minors"/>
  </g>
  <g id="halves" inkscape:groupmode="layer">
    <path d="M 0 0 h 4" class="halves"/>
    <path d="M 20 0 h -4" class="halves"/>
    <path d="M 0 5 h 4" class="halves"/>
    <path d="M 20 5 h -4" class="halves"/>
    <path d="M 0 10 h 4" class="halves"/>
    <path d="M 20 10 h -4" class="halves"/>
    <path d="M 0 15 h 4" class="halves"/>
    <path d="M 20 15 h -4" class="halves"/>
    <path d="M 0 20 h 4" class="halves"/>
    <path d="M 20 20 h -4" class="halves"/>
    <path d="M 0 25 h 4" class="halves"/>
    <path d="M 20 25 h -4" class="halves"/>
    <path d="M 0 30 h 4" class="halves"/>
    <path d="M 20 30 h -4" class="halves"/>
    <path d="M 0 35 h 4" class="halves"/>
    <path d="M 20 35 h -4" class="halves"/>
    <path d="M 0 40 h 4" class="halves"/>
    <path d="M 20 40 h -4" class="halves"/>
    <path d="M 0 45 h 4" class="halves"/>
    <path d="M 20 45 h -4" class="halves"/>
    <path d="M 0 50 h 4" class="halves"/>
    <path d="M 20 50 h -4" class="halves"/>
    <path d="M 0 55 h 4" class="halves"/>
    <path d="M 20 55 h -4" class="halves"/>
    <path d="M 0 60 h 4" class="halves"/>
    <path d="M 20 60 h -4" class="halves"/>
    <path d="M 0 65 h 4" class="halves"/>
    <path d="M 20 65 h -4" class="halves"/>
    <path d="M 0 70 h 4" class="halves"/>
    <path d="M 20 70 h -4" class="halves"/>
    <path d="M 0 75 h 4" class="halves"/>
    <path d="M 20 75 h -4" class="halves"/>
    <path d="M 0 80 h 4" class="halves"/>
    <path d="M 20 80 h -4" class="halves"/>
    <path d="M 0 85 h 4" class="halves"/>
    <path d="M 20 85 h -4" class="halves"/>
    <path d="M 0 90 h 4" class="halves"/>
    <path d="M 20 90 h -4" class="halves"/>
    <path d="M 0 95 h 4" class="halves"/>
    <path d="M 20 95 h -4" class="halves"/>
    <path d="M 0 100 h 4" class="halves"/>
    <path d="M 20 100 h -4" class="halves"/>
    <path d="M 0 105 h 4" class="halves"/>
    <path d="M 20 105 h -4" class="halves"/>
    <path d="M 0 110 h 4" class="halves"/>
    <path d="M 20 110 h -4" class="halves"/>
    <path d="M 0 115 h 4" class="halves"/>
    <path d="M 20 115 h -4" class="halves"/>
    <path d="M 0 120 h 4" class="halves"/>
    <path d="M 20 120 h -4" class="halves"/>
    <path d="M 0 125 h 4" class="halves"/>
    <path d="M 20 125 h -4" class="halves"/>
    <path d="M 0 130 h 4" class="halves"/>
    <path d="M 20 130 h -4" class="halves"/>
    <path d="M 0 135 h 4" class="halves"/>
    <path d="M 20 135 h -4" class="halves"/>
    <path d="M 0 140 h 4" class="halves"/>
    <path d="M 20 140 h -4" class="halves"/>
    <path d="M 0 145 h 4" class="halves"/>
    <path d="M 20 145 h -4" class="halves"/>
    <path d="M 0 150 h 4" class="halves"/>
    <path d="M 20 150 h -4" class="halves"/>
  </g>
  <g id="majors" inkscape:groupmode="layer">
    <path d="M 0 10 h 6" class="majors"/>
    <path d="M 20 10 h -6" class="majors"/>
    <path d="M 0 20 h 6" class="majors"/>
    <path d="M 20 20 h -6" class="majors"/>
    <path d="M 0 30 h 6" class="majors"/>
    <path d="M 20 30 h -6" class="majors"/>
    <path d="M 0 40 h 6" class="majors"/>
    <path d="M 20 40 h -6" class="majors"/>
    <path d="M 0 50 h 6" class="majors"/>
    <path d="M 20 50 h -6" class="majors"/>
    <path d="M 0 60 h 6" class="majors"/>
    <path d="M 20 60 h -6" class="majors"/>
    <path d="M 0 70 h 6" class="majors"/>
    <path d="M 20 70 h -6" class="majors"/>
    <path d="M 0 80 h 6" class="majors"/>
    <path d="M 20 80 h -6" class="majors"/>
    <path d="M 0 90 h 6" class="majors"/>
    <path d="M 20 90 h -6" class="majors"/>
    <path d="M 0 100 h 6" class="majors"/>
    <path d="M 20 100 h -6" class="majors"/>
    <path d="M 0 110 h 6" class="majors"/>
    <path d="M 20 110 h -6" class="majors"/>
    <path d="M 0 120 h 6" class="majors"/>
    <path d="M 20 120 h -6" class="majors"/>
    <path d="M 0 130 h 6" class="majors"/>
    <path d="M 20 130 h -6" class="majors"/>
    <path d="M 0 140 h 6" class="majors"/>
    <path d="M 20 140 h -6" class="majors"/>
    <g id="labels" inkscape:groupmode="layer">
      <text x="7.4" y="3.5" class="labels"> 0</text>
      <text x="7.4" y="11.4" class="labels"> 1</text>
      <text x="7.4" y="21.4" class="labels"> 2</text>
      <text x="7.4" y="31.4" class="labels"> 3</text>
      <text x="7.4" y="41.4" class="labels"> 4</text>
      <text x="7.4" y="51.4" class="labels"> 5</text>
      <text x="7.4" y="61.4" class="labels"> 6</text>
      <text x="7.4" y="71.4" class="labels"> 7</text>
      <text x="7.4" y="81.4" class="labels"> 8</text>
      <text x="7.4" y="91.4" class="labels"> 9</text>
      <text x="7.4" y="101.4" class="labels">10</text>
      <text x="7.4" y="111.4" class="labels">11</text>
      <text x="7.4" y="121.4" class="labels">12</text>
      <text x="7.4" y="131.4" class="labels">13</text>
      <text x="7.4" y="141.4" class="labels">14</text>
      <text x="7.4" y="149" class="labels">15</text>
    </g>
  </g>
</svg>

 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15
#!/usr/bin/env -S ruby -S sevgi

WIDTH   = 20
HEIGHT  = 150
ENSPACE = ""

STYLE = {
  ".labels": { font:   "3pt monospace"                               },
  ".majors": { stroke: "#800080", "stroke-width": 0.2                },
  ".halves": { stroke: "#800080", "stroke-width": 0.1                },
  ".minors": { stroke: "#800080", "stroke-width": 0.1                },
  ".frame":  { stroke: "#800080", "stroke-width": 0.05, fill: "none" }
}

SVG :inkscape, :a4 do
  css STYLE

  rect id: "frame", width: WIDTH, height: HEIGHT, class: "frame"

  layer id: "minors" do
    length = 2

    (0..HEIGHT).step(1) do |y|
      line x1: 0, y1: y, x2: length, y2: y, class: "minors"
      line x1: WIDTH, y1: y, x2: WIDTH - length, y2: y, class: "minors"
    end
  end

  layer id: "halves" do
    length = 4

    (0..HEIGHT).step(5) do |y|
      line x1: 0, y1: y, x2: length, y2: y, class: "halves"
      line x1: WIDTH, y1: y, x2: WIDTH - length, y2: y, class: "halves"
    end
  end

  layer id: "majors" do
    length = 6

    (10..HEIGHT - 10).step(10) do |y|
      line x1: 0, y1: y, x2: length, y2: y, class: "majors"
      line x1: WIDTH, y1: y, x2: WIDTH - length, y2: y, class: "majors"
    end

    layer id: "labels" do
      [
        3.5,
        *(10..HEIGHT - 10).step(10).to_a.map { _1 + 1.4 },
        HEIGHT - 1
      ].each_with_index do |y, i|
        text "#{i.to_s.rjust(2, ENSPACE)}", x: length + 1.4, y: y, class: "labels"
      end
    end
  end
end.Save

<?xml version="1.0" standalone="no"?>
<svg
  xmlns="http://www.w3.org/2000/svg"
  xmlns:_="http://sevgi.roktas.dev"
  xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
  xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
  shape-rendering="crispEdges"
  width="210.0mm"
  height="297.0mm"
  viewBox="0 0 210 297"
>
  <style type="text/css">
    <![CDATA[
      .labels {
        font: 3pt monospace;
      }
      .majors {
        stroke: #800080;
        stroke-width: 0.2;
      }
      .halves {
        stroke: #800080;
        stroke-width: 0.1;
      }
      .minors {
        stroke: #800080;
        stroke-width: 0.1;
      }
      .frame {
        stroke: #800080;
        stroke-width: 0.05;
        fill: none;
      }
    ]]>
  </style>
  <rect id="frame" width="20" height="150" class="frame"/>
  <g id="minors" inkscape:groupmode="layer">
    <line x1="0" y1="0" x2="2" y2="0" class="minors"/>
    <line x1="20" y1="0" x2="18" y2="0" class="minors"/>
    <line x1="0" y1="1" x2="2" y2="1" class="minors"/>
    <line x1="20" y1="1" x2="18" y2="1" class="minors"/>
    <line x1="0" y1="2" x2="2" y2="2" class="minors"/>
    <line x1="20" y1="2" x2="18" y2="2" class="minors"/>
    <line x1="0" y1="3" x2="2" y2="3" class="minors"/>
    <line x1="20" y1="3" x2="18" y2="3" class="minors"/>
    <line x1="0" y1="4" x2="2" y2="4" class="minors"/>
    <line x1="20" y1="4" x2="18" y2="4" class="minors"/>
    <line x1="0" y1="5" x2="2" y2="5" class="minors"/>
    <line x1="20" y1="5" x2="18" y2="5" class="minors"/>
    <line x1="0" y1="6" x2="2" y2="6" class="minors"/>
    <line x1="20" y1="6" x2="18" y2="6" class="minors"/>
    <line x1="0" y1="7" x2="2" y2="7" class="minors"/>
    <line x1="20" y1="7" x2="18" y2="7" class="minors"/>
    <line x1="0" y1="8" x2="2" y2="8" class="minors"/>
    <line x1="20" y1="8" x2="18" y2="8" class="minors"/>
    <line x1="0" y1="9" x2="2" y2="9" class="minors"/>
    <line x1="20" y1="9" x2="18" y2="9" class="minors"/>
    <line x1="0" y1="10" x2="2" y2="10" class="minors"/>
    <line x1="20" y1="10" x2="18" y2="10" class="minors"/>
    <line x1="0" y1="11" x2="2" y2="11" class="minors"/>
    <line x1="20" y1="11" x2="18" y2="11" class="minors"/>
    <line x1="0" y1="12" x2="2" y2="12" class="minors"/>
    <line x1="20" y1="12" x2="18" y2="12" class="minors"/>
    <line x1="0" y1="13" x2="2" y2="13" class="minors"/>
    <line x1="20" y1="13" x2="18" y2="13" class="minors"/>
    <line x1="0" y1="14" x2="2" y2="14" class="minors"/>
    <line x1="20" y1="14" x2="18" y2="14" class="minors"/>
    <line x1="0" y1="15" x2="2" y2="15" class="minors"/>
    <line x1="20" y1="15" x2="18" y2="15" class="minors"/>
    <line x1="0" y1="16" x2="2" y2="16" class="minors"/>
    <line x1="20" y1="16" x2="18" y2="16" class="minors"/>
    <line x1="0" y1="17" x2="2" y2="17" class="minors"/>
    <line x1="20" y1="17" x2="18" y2="17" class="minors"/>
    <line x1="0" y1="18" x2="2" y2="18" class="minors"/>
    <line x1="20" y1="18" x2="18" y2="18" class="minors"/>
    <line x1="0" y1="19" x2="2" y2="19" class="minors"/>
    <line x1="20" y1="19" x2="18" y2="19" class="minors"/>
    <line x1="0" y1="20" x2="2" y2="20" class="minors"/>
    <line x1="20" y1="20" x2="18" y2="20" class="minors"/>
    <line x1="0" y1="21" x2="2" y2="21" class="minors"/>
    <line x1="20" y1="21" x2="18" y2="21" class="minors"/>
    <line x1="0" y1="22" x2="2" y2="22" class="minors"/>
    <line x1="20" y1="22" x2="18" y2="22" class="minors"/>
    <line x1="0" y1="23" x2="2" y2="23" class="minors"/>
    <line x1="20" y1="23" x2="18" y2="23" class="minors"/>
    <line x1="0" y1="24" x2="2" y2="24" class="minors"/>
    <line x1="20" y1="24" x2="18" y2="24" class="minors"/>
    <line x1="0" y1="25" x2="2" y2="25" class="minors"/>
    <line x1="20" y1="25" x2="18" y2="25" class="minors"/>
    <line x1="0" y1="26" x2="2" y2="26" class="minors"/>
    <line x1="20" y1="26" x2="18" y2="26" class="minors"/>
    <line x1="0" y1="27" x2="2" y2="27" class="minors"/>
    <line x1="20" y1="27" x2="18" y2="27" class="minors"/>
    <line x1="0" y1="28" x2="2" y2="28" class="minors"/>
    <line x1="20" y1="28" x2="18" y2="28" class="minors"/>
    <line x1="0" y1="29" x2="2" y2="29" class="minors"/>
    <line x1="20" y1="29" x2="18" y2="29" class="minors"/>
    <line x1="0" y1="30" x2="2" y2="30" class="minors"/>
    <line x1="20" y1="30" x2="18" y2="30" class="minors"/>
    <line x1="0" y1="31" x2="2" y2="31" class="minors"/>
    <line x1="20" y1="31" x2="18" y2="31" class="minors"/>
    <line x1="0" y1="32" x2="2" y2="32" class="minors"/>
    <line x1="20" y1="32" x2="18" y2="32" class="minors"/>
    <line x1="0" y1="33" x2="2" y2="33" class="minors"/>
    <line x1="20" y1="33" x2="18" y2="33" class="minors"/>
    <line x1="0" y1="34" x2="2" y2="34" class="minors"/>
    <line x1="20" y1="34" x2="18" y2="34" class="minors"/>
    <line x1="0" y1="35" x2="2" y2="35" class="minors"/>
    <line x1="20" y1="35" x2="18" y2="35" class="minors"/>
    <line x1="0" y1="36" x2="2" y2="36" class="minors"/>
    <line x1="20" y1="36" x2="18" y2="36" class="minors"/>
    <line x1="0" y1="37" x2="2" y2="37" class="minors"/>
    <line x1="20" y1="37" x2="18" y2="37" class="minors"/>
    <line x1="0" y1="38" x2="2" y2="38" class="minors"/>
    <line x1="20" y1="38" x2="18" y2="38" class="minors"/>
    <line x1="0" y1="39" x2="2" y2="39" class="minors"/>
    <line x1="20" y1="39" x2="18" y2="39" class="minors"/>
    <line x1="0" y1="40" x2="2" y2="40" class="minors"/>
    <line x1="20" y1="40" x2="18" y2="40" class="minors"/>
    <line x1="0" y1="41" x2="2" y2="41" class="minors"/>
    <line x1="20" y1="41" x2="18" y2="41" class="minors"/>
    <line x1="0" y1="42" x2="2" y2="42" class="minors"/>
    <line x1="20" y1="42" x2="18" y2="42" class="minors"/>
    <line x1="0" y1="43" x2="2" y2="43" class="minors"/>
    <line x1="20" y1="43" x2="18" y2="43" class="minors"/>
    <line x1="0" y1="44" x2="2" y2="44" class="minors"/>
    <line x1="20" y1="44" x2="18" y2="44" class="minors"/>
    <line x1="0" y1="45" x2="2" y2="45" class="minors"/>
    <line x1="20" y1="45" x2="18" y2="45" class="minors"/>
    <line x1="0" y1="46" x2="2" y2="46" class="minors"/>
    <line x1="20" y1="46" x2="18" y2="46" class="minors"/>
    <line x1="0" y1="47" x2="2" y2="47" class="minors"/>
    <line x1="20" y1="47" x2="18" y2="47" class="minors"/>
    <line x1="0" y1="48" x2="2" y2="48" class="minors"/>
    <line x1="20" y1="48" x2="18" y2="48" class="minors"/>
    <line x1="0" y1="49" x2="2" y2="49" class="minors"/>
    <line x1="20" y1="49" x2="18" y2="49" class="minors"/>
    <line x1="0" y1="50" x2="2" y2="50" class="minors"/>
    <line x1="20" y1="50" x2="18" y2="50" class="minors"/>
    <line x1="0" y1="51" x2="2" y2="51" class="minors"/>
    <line x1="20" y1="51" x2="18" y2="51" class="minors"/>
    <line x1="0" y1="52" x2="2" y2="52" class="minors"/>
    <line x1="20" y1="52" x2="18" y2="52" class="minors"/>
    <line x1="0" y1="53" x2="2" y2="53" class="minors"/>
    <line x1="20" y1="53" x2="18" y2="53" class="minors"/>
    <line x1="0" y1="54" x2="2" y2="54" class="minors"/>
    <line x1="20" y1="54" x2="18" y2="54" class="minors"/>
    <line x1="0" y1="55" x2="2" y2="55" class="minors"/>
    <line x1="20" y1="55" x2="18" y2="55" class="minors"/>
    <line x1="0" y1="56" x2="2" y2="56" class="minors"/>
    <line x1="20" y1="56" x2="18" y2="56" class="minors"/>
    <line x1="0" y1="57" x2="2" y2="57" class="minors"/>
    <line x1="20" y1="57" x2="18" y2="57" class="minors"/>
    <line x1="0" y1="58" x2="2" y2="58" class="minors"/>
    <line x1="20" y1="58" x2="18" y2="58" class="minors"/>
    <line x1="0" y1="59" x2="2" y2="59" class="minors"/>
    <line x1="20" y1="59" x2="18" y2="59" class="minors"/>
    <line x1="0" y1="60" x2="2" y2="60" class="minors"/>
    <line x1="20" y1="60" x2="18" y2="60" class="minors"/>
    <line x1="0" y1="61" x2="2" y2="61" class="minors"/>
    <line x1="20" y1="61" x2="18" y2="61" class="minors"/>
    <line x1="0" y1="62" x2="2" y2="62" class="minors"/>
    <line x1="20" y1="62" x2="18" y2="62" class="minors"/>
    <line x1="0" y1="63" x2="2" y2="63" class="minors"/>
    <line x1="20" y1="63" x2="18" y2="63" class="minors"/>
    <line x1="0" y1="64" x2="2" y2="64" class="minors"/>
    <line x1="20" y1="64" x2="18" y2="64" class="minors"/>
    <line x1="0" y1="65" x2="2" y2="65" class="minors"/>
    <line x1="20" y1="65" x2="18" y2="65" class="minors"/>
    <line x1="0" y1="66" x2="2" y2="66" class="minors"/>
    <line x1="20" y1="66" x2="18" y2="66" class="minors"/>
    <line x1="0" y1="67" x2="2" y2="67" class="minors"/>
    <line x1="20" y1="67" x2="18" y2="67" class="minors"/>
    <line x1="0" y1="68" x2="2" y2="68" class="minors"/>
    <line x1="20" y1="68" x2="18" y2="68" class="minors"/>
    <line x1="0" y1="69" x2="2" y2="69" class="minors"/>
    <line x1="20" y1="69" x2="18" y2="69" class="minors"/>
    <line x1="0" y1="70" x2="2" y2="70" class="minors"/>
    <line x1="20" y1="70" x2="18" y2="70" class="minors"/>
    <line x1="0" y1="71" x2="2" y2="71" class="minors"/>
    <line x1="20" y1="71" x2="18" y2="71" class="minors"/>
    <line x1="0" y1="72" x2="2" y2="72" class="minors"/>
    <line x1="20" y1="72" x2="18" y2="72" class="minors"/>
    <line x1="0" y1="73" x2="2" y2="73" class="minors"/>
    <line x1="20" y1="73" x2="18" y2="73" class="minors"/>
    <line x1="0" y1="74" x2="2" y2="74" class="minors"/>
    <line x1="20" y1="74" x2="18" y2="74" class="minors"/>
    <line x1="0" y1="75" x2="2" y2="75" class="minors"/>
    <line x1="20" y1="75" x2="18" y2="75" class="minors"/>
    <line x1="0" y1="76" x2="2" y2="76" class="minors"/>
    <line x1="20" y1="76" x2="18" y2="76" class="minors"/>
    <line x1="0" y1="77" x2="2" y2="77" class="minors"/>
    <line x1="20" y1="77" x2="18" y2="77" class="minors"/>
    <line x1="0" y1="78" x2="2" y2="78" class="minors"/>
    <line x1="20" y1="78" x2="18" y2="78" class="minors"/>
    <line x1="0" y1="79" x2="2" y2="79" class="minors"/>
    <line x1="20" y1="79" x2="18" y2="79" class="minors"/>
    <line x1="0" y1="80" x2="2" y2="80" class="minors"/>
    <line x1="20" y1="80" x2="18" y2="80" class="minors"/>
    <line x1="0" y1="81" x2="2" y2="81" class="minors"/>
    <line x1="20" y1="81" x2="18" y2="81" class="minors"/>
    <line x1="0" y1="82" x2="2" y2="82" class="minors"/>
    <line x1="20" y1="82" x2="18" y2="82" class="minors"/>
    <line x1="0" y1="83" x2="2" y2="83" class="minors"/>
    <line x1="20" y1="83" x2="18" y2="83" class="minors"/>
    <line x1="0" y1="84" x2="2" y2="84" class="minors"/>
    <line x1="20" y1="84" x2="18" y2="84" class="minors"/>
    <line x1="0" y1="85" x2="2" y2="85" class="minors"/>
    <line x1="20" y1="85" x2="18" y2="85" class="minors"/>
    <line x1="0" y1="86" x2="2" y2="86" class="minors"/>
    <line x1="20" y1="86" x2="18" y2="86" class="minors"/>
    <line x1="0" y1="87" x2="2" y2="87" class="minors"/>
    <line x1="20" y1="87" x2="18" y2="87" class="minors"/>
    <line x1="0" y1="88" x2="2" y2="88" class="minors"/>
    <line x1="20" y1="88" x2="18" y2="88" class="minors"/>
    <line x1="0" y1="89" x2="2" y2="89" class="minors"/>
    <line x1="20" y1="89" x2="18" y2="89" class="minors"/>
    <line x1="0" y1="90" x2="2" y2="90" class="minors"/>
    <line x1="20" y1="90" x2="18" y2="90" class="minors"/>
    <line x1="0" y1="91" x2="2" y2="91" class="minors"/>
    <line x1="20" y1="91" x2="18" y2="91" class="minors"/>
    <line x1="0" y1="92" x2="2" y2="92" class="minors"/>
    <line x1="20" y1="92" x2="18" y2="92" class="minors"/>
    <line x1="0" y1="93" x2="2" y2="93" class="minors"/>
    <line x1="20" y1="93" x2="18" y2="93" class="minors"/>
    <line x1="0" y1="94" x2="2" y2="94" class="minors"/>
    <line x1="20" y1="94" x2="18" y2="94" class="minors"/>
    <line x1="0" y1="95" x2="2" y2="95" class="minors"/>
    <line x1="20" y1="95" x2="18" y2="95" class="minors"/>
    <line x1="0" y1="96" x2="2" y2="96" class="minors"/>
    <line x1="20" y1="96" x2="18" y2="96" class="minors"/>
    <line x1="0" y1="97" x2="2" y2="97" class="minors"/>
    <line x1="20" y1="97" x2="18" y2="97" class="minors"/>
    <line x1="0" y1="98" x2="2" y2="98" class="minors"/>
    <line x1="20" y1="98" x2="18" y2="98" class="minors"/>
    <line x1="0" y1="99" x2="2" y2="99" class="minors"/>
    <line x1="20" y1="99" x2="18" y2="99" class="minors"/>
    <line x1="0" y1="100" x2="2" y2="100" class="minors"/>
    <line x1="20" y1="100" x2="18" y2="100" class="minors"/>
    <line x1="0" y1="101" x2="2" y2="101" class="minors"/>
    <line x1="20" y1="101" x2="18" y2="101" class="minors"/>
    <line x1="0" y1="102" x2="2" y2="102" class="minors"/>
    <line x1="20" y1="102" x2="18" y2="102" class="minors"/>
    <line x1="0" y1="103" x2="2" y2="103" class="minors"/>
    <line x1="20" y1="103" x2="18" y2="103" class="minors"/>
    <line x1="0" y1="104" x2="2" y2="104" class="minors"/>
    <line x1="20" y1="104" x2="18" y2="104" class="minors"/>
    <line x1="0" y1="105" x2="2" y2="105" class="minors"/>
    <line x1="20" y1="105" x2="18" y2="105" class="minors"/>
    <line x1="0" y1="106" x2="2" y2="106" class="minors"/>
    <line x1="20" y1="106" x2="18" y2="106" class="minors"/>
    <line x1="0" y1="107" x2="2" y2="107" class="minors"/>
    <line x1="20" y1="107" x2="18" y2="107" class="minors"/>
    <line x1="0" y1="108" x2="2" y2="108" class="minors"/>
    <line x1="20" y1="108" x2="18" y2="108" class="minors"/>
    <line x1="0" y1="109" x2="2" y2="109" class="minors"/>
    <line x1="20" y1="109" x2="18" y2="109" class="minors"/>
    <line x1="0" y1="110" x2="2" y2="110" class="minors"/>
    <line x1="20" y1="110" x2="18" y2="110" class="minors"/>
    <line x1="0" y1="111" x2="2" y2="111" class="minors"/>
    <line x1="20" y1="111" x2="18" y2="111" class="minors"/>
    <line x1="0" y1="112" x2="2" y2="112" class="minors"/>
    <line x1="20" y1="112" x2="18" y2="112" class="minors"/>
    <line x1="0" y1="113" x2="2" y2="113" class="minors"/>
    <line x1="20" y1="113" x2="18" y2="113" class="minors"/>
    <line x1="0" y1="114" x2="2" y2="114" class="minors"/>
    <line x1="20" y1="114" x2="18" y2="114" class="minors"/>
    <line x1="0" y1="115" x2="2" y2="115" class="minors"/>
    <line x1="20" y1="115" x2="18" y2="115" class="minors"/>
    <line x1="0" y1="116" x2="2" y2="116" class="minors"/>
    <line x1="20" y1="116" x2="18" y2="116" class="minors"/>
    <line x1="0" y1="117" x2="2" y2="117" class="minors"/>
    <line x1="20" y1="117" x2="18" y2="117" class="minors"/>
    <line x1="0" y1="118" x2="2" y2="118" class="minors"/>
    <line x1="20" y1="118" x2="18" y2="118" class="minors"/>
    <line x1="0" y1="119" x2="2" y2="119" class="minors"/>
    <line x1="20" y1="119" x2="18" y2="119" class="minors"/>
    <line x1="0" y1="120" x2="2" y2="120" class="minors"/>
    <line x1="20" y1="120" x2="18" y2="120" class="minors"/>
    <line x1="0" y1="121" x2="2" y2="121" class="minors"/>
    <line x1="20" y1="121" x2="18" y2="121" class="minors"/>
    <line x1="0" y1="122" x2="2" y2="122" class="minors"/>
    <line x1="20" y1="122" x2="18" y2="122" class="minors"/>
    <line x1="0" y1="123" x2="2" y2="123" class="minors"/>
    <line x1="20" y1="123" x2="18" y2="123" class="minors"/>
    <line x1="0" y1="124" x2="2" y2="124" class="minors"/>
    <line x1="20" y1="124" x2="18" y2="124" class="minors"/>
    <line x1="0" y1="125" x2="2" y2="125" class="minors"/>
    <line x1="20" y1="125" x2="18" y2="125" class="minors"/>
    <line x1="0" y1="126" x2="2" y2="126" class="minors"/>
    <line x1="20" y1="126" x2="18" y2="126" class="minors"/>
    <line x1="0" y1="127" x2="2" y2="127" class="minors"/>
    <line x1="20" y1="127" x2="18" y2="127" class="minors"/>
    <line x1="0" y1="128" x2="2" y2="128" class="minors"/>
    <line x1="20" y1="128" x2="18" y2="128" class="minors"/>
    <line x1="0" y1="129" x2="2" y2="129" class="minors"/>
    <line x1="20" y1="129" x2="18" y2="129" class="minors"/>
    <line x1="0" y1="130" x2="2" y2="130" class="minors"/>
    <line x1="20" y1="130" x2="18" y2="130" class="minors"/>
    <line x1="0" y1="131" x2="2" y2="131" class="minors"/>
    <line x1="20" y1="131" x2="18" y2="131" class="minors"/>
    <line x1="0" y1="132" x2="2" y2="132" class="minors"/>
    <line x1="20" y1="132" x2="18" y2="132" class="minors"/>
    <line x1="0" y1="133" x2="2" y2="133" class="minors"/>
    <line x1="20" y1="133" x2="18" y2="133" class="minors"/>
    <line x1="0" y1="134" x2="2" y2="134" class="minors"/>
    <line x1="20" y1="134" x2="18" y2="134" class="minors"/>
    <line x1="0" y1="135" x2="2" y2="135" class="minors"/>
    <line x1="20" y1="135" x2="18" y2="135" class="minors"/>
    <line x1="0" y1="136" x2="2" y2="136" class="minors"/>
    <line x1="20" y1="136" x2="18" y2="136" class="minors"/>
    <line x1="0" y1="137" x2="2" y2="137" class="minors"/>
    <line x1="20" y1="137" x2="18" y2="137" class="minors"/>
    <line x1="0" y1="138" x2="2" y2="138" class="minors"/>
    <line x1="20" y1="138" x2="18" y2="138" class="minors"/>
    <line x1="0" y1="139" x2="2" y2="139" class="minors"/>
    <line x1="20" y1="139" x2="18" y2="139" class="minors"/>
    <line x1="0" y1="140" x2="2" y2="140" class="minors"/>
    <line x1="20" y1="140" x2="18" y2="140" class="minors"/>
    <line x1="0" y1="141" x2="2" y2="141" class="minors"/>
    <line x1="20" y1="141" x2="18" y2="141" class="minors"/>
    <line x1="0" y1="142" x2="2" y2="142" class="minors"/>
    <line x1="20" y1="142" x2="18" y2="142" class="minors"/>
    <line x1="0" y1="143" x2="2" y2="143" class="minors"/>
    <line x1="20" y1="143" x2="18" y2="143" class="minors"/>
    <line x1="0" y1="144" x2="2" y2="144" class="minors"/>
    <line x1="20" y1="144" x2="18" y2="144" class="minors"/>
    <line x1="0" y1="145" x2="2" y2="145" class="minors"/>
    <line x1="20" y1="145" x2="18" y2="145" class="minors"/>
    <line x1="0" y1="146" x2="2" y2="146" class="minors"/>
    <line x1="20" y1="146" x2="18" y2="146" class="minors"/>
    <line x1="0" y1="147" x2="2" y2="147" class="minors"/>
    <line x1="20" y1="147" x2="18" y2="147" class="minors"/>
    <line x1="0" y1="148" x2="2" y2="148" class="minors"/>
    <line x1="20" y1="148" x2="18" y2="148" class="minors"/>
    <line x1="0" y1="149" x2="2" y2="149" class="minors"/>
    <line x1="20" y1="149" x2="18" y2="149" class="minors"/>
    <line x1="0" y1="150" x2="2" y2="150" class="minors"/>
    <line x1="20" y1="150" x2="18" y2="150" class="minors"/>
  </g>
  <g id="halves" inkscape:groupmode="layer">
    <line x1="0" y1="0" x2="4" y2="0" class="halves"/>
    <line x1="20" y1="0" x2="16" y2="0" class="halves"/>
    <line x1="0" y1="5" x2="4" y2="5" class="halves"/>
    <line x1="20" y1="5" x2="16" y2="5" class="halves"/>
    <line x1="0" y1="10" x2="4" y2="10" class="halves"/>
    <line x1="20" y1="10" x2="16" y2="10" class="halves"/>
    <line x1="0" y1="15" x2="4" y2="15" class="halves"/>
    <line x1="20" y1="15" x2="16" y2="15" class="halves"/>
    <line x1="0" y1="20" x2="4" y2="20" class="halves"/>
    <line x1="20" y1="20" x2="16" y2="20" class="halves"/>
    <line x1="0" y1="25" x2="4" y2="25" class="halves"/>
    <line x1="20" y1="25" x2="16" y2="25" class="halves"/>
    <line x1="0" y1="30" x2="4" y2="30" class="halves"/>
    <line x1="20" y1="30" x2="16" y2="30" class="halves"/>
    <line x1="0" y1="35" x2="4" y2="35" class="halves"/>
    <line x1="20" y1="35" x2="16" y2="35" class="halves"/>
    <line x1="0" y1="40" x2="4" y2="40" class="halves"/>
    <line x1="20" y1="40" x2="16" y2="40" class="halves"/>
    <line x1="0" y1="45" x2="4" y2="45" class="halves"/>
    <line x1="20" y1="45" x2="16" y2="45" class="halves"/>
    <line x1="0" y1="50" x2="4" y2="50" class="halves"/>
    <line x1="20" y1="50" x2="16" y2="50" class="halves"/>
    <line x1="0" y1="55" x2="4" y2="55" class="halves"/>
    <line x1="20" y1="55" x2="16" y2="55" class="halves"/>
    <line x1="0" y1="60" x2="4" y2="60" class="halves"/>
    <line x1="20" y1="60" x2="16" y2="60" class="halves"/>
    <line x1="0" y1="65" x2="4" y2="65" class="halves"/>
    <line x1="20" y1="65" x2="16" y2="65" class="halves"/>
    <line x1="0" y1="70" x2="4" y2="70" class="halves"/>
    <line x1="20" y1="70" x2="16" y2="70" class="halves"/>
    <line x1="0" y1="75" x2="4" y2="75" class="halves"/>
    <line x1="20" y1="75" x2="16" y2="75" class="halves"/>
    <line x1="0" y1="80" x2="4" y2="80" class="halves"/>
    <line x1="20" y1="80" x2="16" y2="80" class="halves"/>
    <line x1="0" y1="85" x2="4" y2="85" class="halves"/>
    <line x1="20" y1="85" x2="16" y2="85" class="halves"/>
    <line x1="0" y1="90" x2="4" y2="90" class="halves"/>
    <line x1="20" y1="90" x2="16" y2="90" class="halves"/>
    <line x1="0" y1="95" x2="4" y2="95" class="halves"/>
    <line x1="20" y1="95" x2="16" y2="95" class="halves"/>
    <line x1="0" y1="100" x2="4" y2="100" class="halves"/>
    <line x1="20" y1="100" x2="16" y2="100" class="halves"/>
    <line x1="0" y1="105" x2="4" y2="105" class="halves"/>
    <line x1="20" y1="105" x2="16" y2="105" class="halves"/>
    <line x1="0" y1="110" x2="4" y2="110" class="halves"/>
    <line x1="20" y1="110" x2="16" y2="110" class="halves"/>
    <line x1="0" y1="115" x2="4" y2="115" class="halves"/>
    <line x1="20" y1="115" x2="16" y2="115" class="halves"/>
    <line x1="0" y1="120" x2="4" y2="120" class="halves"/>
    <line x1="20" y1="120" x2="16" y2="120" class="halves"/>
    <line x1="0" y1="125" x2="4" y2="125" class="halves"/>
    <line x1="20" y1="125" x2="16" y2="125" class="halves"/>
    <line x1="0" y1="130" x2="4" y2="130" class="halves"/>
    <line x1="20" y1="130" x2="16" y2="130" class="halves"/>
    <line x1="0" y1="135" x2="4" y2="135" class="halves"/>
    <line x1="20" y1="135" x2="16" y2="135" class="halves"/>
    <line x1="0" y1="140" x2="4" y2="140" class="halves"/>
    <line x1="20" y1="140" x2="16" y2="140" class="halves"/>
    <line x1="0" y1="145" x2="4" y2="145" class="halves"/>
    <line x1="20" y1="145" x2="16" y2="145" class="halves"/>
    <line x1="0" y1="150" x2="4" y2="150" class="halves"/>
    <line x1="20" y1="150" x2="16" y2="150" class="halves"/>
  </g>
  <g id="majors" inkscape:groupmode="layer">
    <line x1="0" y1="10" x2="6" y2="10" class="majors"/>
    <line x1="20" y1="10" x2="14" y2="10" class="majors"/>
    <line x1="0" y1="20" x2="6" y2="20" class="majors"/>
    <line x1="20" y1="20" x2="14" y2="20" class="majors"/>
    <line x1="0" y1="30" x2="6" y2="30" class="majors"/>
    <line x1="20" y1="30" x2="14" y2="30" class="majors"/>
    <line x1="0" y1="40" x2="6" y2="40" class="majors"/>
    <line x1="20" y1="40" x2="14" y2="40" class="majors"/>
    <line x1="0" y1="50" x2="6" y2="50" class="majors"/>
    <line x1="20" y1="50" x2="14" y2="50" class="majors"/>
    <line x1="0" y1="60" x2="6" y2="60" class="majors"/>
    <line x1="20" y1="60" x2="14" y2="60" class="majors"/>
    <line x1="0" y1="70" x2="6" y2="70" class="majors"/>
    <line x1="20" y1="70" x2="14" y2="70" class="majors"/>
    <line x1="0" y1="80" x2="6" y2="80" class="majors"/>
    <line x1="20" y1="80" x2="14" y2="80" class="majors"/>
    <line x1="0" y1="90" x2="6" y2="90" class="majors"/>
    <line x1="20" y1="90" x2="14" y2="90" class="majors"/>
    <line x1="0" y1="100" x2="6" y2="100" class="majors"/>
    <line x1="20" y1="100" x2="14" y2="100" class="majors"/>
    <line x1="0" y1="110" x2="6" y2="110" class="majors"/>
    <line x1="20" y1="110" x2="14" y2="110" class="majors"/>
    <line x1="0" y1="120" x2="6" y2="120" class="majors"/>
    <line x1="20" y1="120" x2="14" y2="120" class="majors"/>
    <line x1="0" y1="130" x2="6" y2="130" class="majors"/>
    <line x1="20" y1="130" x2="14" y2="130" class="majors"/>
    <line x1="0" y1="140" x2="6" y2="140" class="majors"/>
    <line x1="20" y1="140" x2="14" y2="140" class="majors"/>
    <g id="labels" inkscape:groupmode="layer">
      <text x="7.4" y="3.5" class="labels"> 0</text>
      <text x="7.4" y="11.4" class="labels"> 1</text>
      <text x="7.4" y="21.4" class="labels"> 2</text>
      <text x="7.4" y="31.4" class="labels"> 3</text>
      <text x="7.4" y="41.4" class="labels"> 4</text>
      <text x="7.4" y="51.4" class="labels"> 5</text>
      <text x="7.4" y="61.4" class="labels"> 6</text>
      <text x="7.4" y="71.4" class="labels"> 7</text>
      <text x="7.4" y="81.4" class="labels"> 8</text>
      <text x="7.4" y="91.4" class="labels"> 9</text>
      <text x="7.4" y="101.4" class="labels">10</text>
      <text x="7.4" y="111.4" class="labels">11</text>
      <text x="7.4" y="121.4" class="labels">12</text>
      <text x="7.4" y="131.4" class="labels">13</text>
      <text x="7.4" y="141.4" class="labels">14</text>
      <text x="7.4" y="149" class="labels">15</text>
    </g>
  </g>
</svg>

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.