はじめに
Advent of Code のパズルを解いているとき、よく出てくるのが以下のような文字列による地図です
......
.#..#.
..XX..
.#..#.
......
Elixir でこれを普通に文字列として読み込んで Livebook に表示すると、以下のようになります
"......\n.#..#.\n..XX..\n.#..#.\n......\n"
これでは人間が地図として認識するのが難しいです
どうにかできないものでしょうか
使用例のノートブックはこちら
通常の Kino.Text による表示
Kino.Text
を使って文字列を表示すると、以下のような表示になります
改行はされましたが、文字の幅が統一されていないため、列が崩れて表示されてしまいます
terminal: true
による等幅フォント表示
Kino.Text
の第 2 引数に terminal: true
を渡すと、以下のように表示されます
ブラウザの開発者モードで出力箇所を見てみると、エディター内と同じ、以下のクラスが適用されていることが分かります
.font-editor {
font-family: JetBrains Mono, Droid Sans Mono, "monospace";
font-variant-ligatures: none;
font-size: 14px;
}
この Mono
や monospace
は等幅フォント(とうはばフォント)を表しており、これによって文字の幅が揃えられています
痒いところに手が届く機能ですね
まとめ
やはり Livebook は何にでも応えてくれますね
いざとなれば機能を追加すればよいし、、、