今日は待ちに待ったゆきだるまの日です!
もうすぐナントカの日!#ナントカ 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 ☃!