Whitesnowman: ゆきだるま言語

2017-08-08 (updated: 2017-10-31)  #TeX  #LaTeX  #ゆきだるま 

今日は待ちに待ったゆきだるまの日です!

これまで数多の☃芸人たちによって,文書組版における “本質的なモノ” すなわち☃を (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

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 ☃!


  1. 2017年8月8日現在,whitesnowman パッケージでは一部きちんと無視されない文字があります({, }, %, etc.) ↩︎

  2. 公式のサイトもあるのですが,現在はリンク切れのようです. ↩︎

  3. 主に LuaTeX で動作確認を行っているので,LuaTeX での実行を推奨します. ↩︎