今日は待ちに待ったゆきだるまの日です!
もうすぐナントカの日!#ナントカ pic.twitter.com/uhyX59AtmZ
— ZR-TeXnobabbler(∉∅) (@zr_tex8r) 2017年8月3日
これまで数多の☃芸人たちによって,文書組版における “本質的なモノ” すなわち☃を (La)TeX 文書において活用するための素敵なパッケージが開発されてきました.以下はその一例です.
- scsnowman: TikZ でカワイイゆきだるまを描画
- scpremiumfriday: プレミアムフライデーに素敵なコトが起こる
これらの画期的なパッケージを用いると,確かに組版結果は本質的でかわいく素敵になるのですが,大変惜しいことに LaTeX ソースの方はというと相変わらずバックスラッシュだらけのままです.この現状に対して皆さんは「バックスラッシュもその他の ASCII 文字ももう見飽きた!」と感じているはずです.
そんな悩める TeX ユーザの皆さんのために,今回ゆきだるまだけを用いて文書作成もプログラミングも行うことができる画期的な言語 Whitesnowman を開発しました.
言語仕様
多くのプログラミング言語において「空白文字」が無視されがちであるという不公平を是正するために開発された,Whitespace という言語があります.この言語はスペース・タブ・改行の3文字だけを用いるチューリング完全なプログラミング言語です.
ところで,Unicode 上には本質的な文字,すなわち「ゆきだるま」が合計3箇所に割り当てられています.
- ☃ U+2603 SNOWMAN
- ⛄ U+26C4 SNOWMAN WITHOUT SNOW
- ⛇ U+26C7 BLACK SNOWMAN
Whitesnowman は,この事実を用いて Whitespace のスペースを☃,タブを⛄,改行を⛇に置き換えた言語です.それ以外のすべての文字は無視されます1.
なお,Whitespace の言語仕様については以下のサイトを参考にしました2.
- Rubyist Magazine - Rubyist のための他言語探訪【第14回】Whitespace
- Whitespace 基礎文法最速マスター - どうでもいい情報置き場
- 変態言語 whitespace のインタプリタ書いた - Ryoの開発日記
Whitesnowman パッケージ
以下のリポジトリは,Whitesnowman の TeX 実装です.Unicode を直接扱うことのできる TeX 処理系(LuaTeX, XeTeX, upTeX, etc.)で動作します3.
このパッケージを読み込むと,whitesnowman 環境の中身が Whitesnowman 言語として解釈・実行されます.下に示したのは単純な Hello World プログラムです.
%#!luatex
\documentclass{article}
\usepackage{whitesnowman}
\begin{document}
\begin{whitesnowman}
☃☃☃⛄☃☃⛄☃
☃☃⛇⛄⛇☃☃☃☃☃⛄⛄
☃☃⛄☃⛄⛇⛄⛇☃☃☃☃☃⛄
⛄☃ ⛄⛄☃☃⛇⛄⛇ ☃☃
☃☃☃⛄⛄☃⛄⛄☃☃⛇⛄⛇☃☃
☃☃☃⛄⛄☃⛄⛄⛄⛄⛇⛄⛇☃
☃☃☃☃⛄☃☃☃☃☃⛇⛄
⛇☃☃☃☃☃⛄☃⛄☃
⛄⛄⛄⛇⛄⛇☃☃☃☃☃⛄
⛄☃⛄⛄⛄⛄⛇⛄⛇☃☃☃☃☃
⛄⛄⛄☃☃⛄☃⛇⛄⛇☃☃☃☃☃
⛄⛄☃⛄⛄☃☃⛇⛄⛇☃☃☃☃☃⛄
⛄☃☃⛄☃☃⛇⛄⛇☃☃☃☃☃☃
☃☃⛄☃⛄☃⛇⛄⛇☃☃⛇⛇⛇
\end{whitesnowman}
\end{document}
おわりに
Whitesnowman 言語を使うことで,今後は☃を書くだけでレポートも論文も幸せな気持ちで作成することができますね.
Thanks TeX, and Good-bye!
Welcome to ようこそ world of ☃!