Hatena::ブログ(Diary)

マクロツイーター このページをアンテナに追加 RSSフィード Twitter

2011-12-24

TeX で「ほむほむ」したり草を生やす件について

何故か、TeX 言語(Lua でなくて)で Grass/「ほむほむ」のインタプリタを作ることがネタとして意味があることになってしまったので、作ってみた。

とにかくサンプル

[test-homuhomu-1.tex]
% 文字コードは UTF-8
\documentclass[a4paper]{article}
\usepackage{bxgrassator}
\begin{document}

\begin{exechomuhomu}
ほむほむほむ ほむほむほむ ほむほむ ほむほむほむ ほむほむ ほむほむ ほむ
ほむほむ ほむほむ ほむ ほむほむほむ ほむ ほむほむほむほむ ほむ
 ほむほむ ほむ ほむほむほむ ほむ ほむほむほむほむ ほむ ほむほむほむほむ ほむ
 ほむ ほむほむほむほむほむほむほむほむ ほむ ほむほむほむほむほむほむほむほむほむほむ
 ほむほむほむほむほむ ほむほむほむほむほむほむほむほむほむほむ ほむ ほむほむ
 ほむほむほむほむほむほむほむほむ ほむほむほむほむほむほむほむほむほむほむほむほむ
 ほむ ほむほむ ほむほむ ほむ ほむほむほむほむほむ ほむ ほむほむほむほむ ほむ
ほむ ほむほむほむほむほむほむほむほむほむほむほむほむほむほむほむほむほむ ほむ
 ほむ ほむほむほむほむ ほむほむ ほむほむほむほむほむほむほむほむ
 ほむほむほむ ほむほむほむほむ ほむほむほむほむ ほむほむほむほむほむほむほむほむ
ほむ
\end{exechomuhomu}

{\ttfamily\begin{exechomuhomu*}
ほむほむほむ ほむほむほむ ほむほむ ほむほむほむ ほむほむ ほむほむ ほむ
ほむほむ ほむほむ ほむ ほむほむほむ ほむ ほむほむほむほむ ほむ
 ほむほむ ほむ ほむほむほむ ほむ ほむほむほむほむ ほむ ほむほむほむほむ ほむ
 ほむ ほむほむほむほむほむほむほむほむ ほむ ほむほむほむほむほむほむほむほむほむほむ
 ほむほむほむほむほむ ほむほむほむほむほむほむほむほむほむほむ ほむ ほむほむ
 ほむほむほむほむほむほむほむほむ ほむほむほむほむほむほむほむほむほむほむほむほむ
 ほむ ほむほむ ほむほむ ほむ ほむほむほむほむほむ ほむ ほむほむほむほむ ほむ
ほむ ほむほむほむほむほむほむほむほむほむほむほむほむほむほむほむほむほむ ほむ
 ほむ ほむほむほむほむ ほむほむ ほむほむほむほむほむほむほむほむ
 ほむほむほむ ほむほむほむほむ ほむほむほむほむ ほむほむほむほむほむほむほむほむ
ほむ
\end{exechomuhomu*}}

\end{document}

これを pLaTeX組版する。(LuaLaTeX でないぞ!)*1

# platex -kanji=utf8 test-homuhomu1.tex
# dvipdfmx test-homuhomu1.dvi
f:id:zrbabbler:20111225012530p:image

どうやら動いているように見える。

インストールと使用の方法

上のサンプルで読み込んでいる bxgrassator というパッケージがインタプリタの機能を提供する。これの使い方を簡単に説明する。以下の場所からダウンロードできる。

インストールは、以下のファイルを「TeX システムから見える場所」に置く。

  • tex/bxgrassator.def
  • tex/bxgrassator-px.def
  • tex/ixgrassator.sty

bxgrassator パッケージの使用法については先日示した ixgrassator (Lua で実装したインタプリタを LuaTeX で動かすもの)と同じであるのでそちらを参照してほしい。細かい仕様については若干の相違があるが、それは後日説明したい。注意として、「Grass で非 ASCII 文字を使う」および「『ほむほむ』言語を扱う」ためには、pTeX 系/XeTeX/LuaTeX(要するに 8 ビット欧文 TeX 以外)が必須になる。

さらにサンプル

[test-bxgrassator.tex]

Grassナベアツ」を実行した例も載せておく。フォント周りの設定は先日のサンプルと同じ。

% 文字コードは UTF-8
\documentclass[a4paper]{article}
\usepackage{bxgrassator}
\usepackage{type1cm}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\begin{document}

\begin{procgrass}{\NabeAzz}
wwwWwwwWwwwvwwwWWWwwWWWWwwwWwwwWWWwvwwwWWWwwWWWWwwwWwwwWWWwWWWWWWwvwWWwWWWWwWWWW
WwWwwwwwwwwwWwwwwwwwwwwwWWWWWWWwwwwwwWWWWWWWWwWWWWWWWWWWwWwwwwwwwwwwwwwwWwwwwwww
wwwwwwwwwWWWWWWwWwWwwwwwwwwwwwwwwwwwwWWwwwwwwwwwwwwwwwWWWwwwwwwwwwwwwwwwwwWWwwww
wWWwWWWWwWWWWwWWWWWwWWWWWWwWWWWWWWWwWWWWWWWWWwWwwwwwwwwwwwWwwwwwwwwwwwwwwwWWWWWW
WWWWWWWWwwwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWwWWWWWWWWWWWWWwWWWWWWWWWWWWWWWwwwWWWW
WWWWWWWWWWWWWWWwwwwwwwwwwwwwwwwwwwWwwwwwwwwwwwwwwwwwwWWWWwWwwwwwwwwWWWwWWWWwWWWW
WWWwwwwwWwwwwWWWWWWwwwwwWWWWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwWwwwWW
wWWWWWWWWWWWwWWWWwWWWWWwWWWWWWwWWWWWWWWWWWWWWWWwWWWWWWWWwwWwwWwWwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwWwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwWWwwwwww
wwwwwwwwwwwwwwWWWwwwwwwwwwwwwwwwwwwwWWWWwwwwwwwwwwwwwwwwwwWWWWWwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwWWWWWWwwwwwwwwwwwwwwWWWWWWWwwwwwwwwwwwwwwwwwww
WWWWWWWWwwwwwwwwwwwwwwWWWWWWWWWwwwwwwwwwwwwwWWWWWWWWWWwwwwwwwwwwwwwwwwwwwwWWWWWW
WWWWWwwwwwwwwwwwwwwwWWWWWWWWWWWWwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWwwwwwwwwwwwwwwwwWW
WWWWWWWWWWWWwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwWwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwWWWwWWWWWwWWWWWWWwWWWWWWWWWwWWWWWWWWWWWwWWWWWWWWWWWWWwWWWWWWWWWWWWWWWwWWWW
WWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWWWWw
WWWWWWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWwvwwvWWwvwwwWWWwWwwwvWwwwvwwwWWWwwwwWwwWWWWwWWWWWWwwwwwwwwwwWwwwwwvwwwwwwWwww
wwwWwwwwwwWwwwwwwWwwwwwwWwwwwwwvwWwwwwwwwWwwwwwWwwwwwwwwWWWWWwWwwWwwwWwwwwWwwwww
vwwwwWWWwWwwwwwWWWWWWWWWWWWWWWWWWWwwwWWwWWWWWWwWwwwwwwvwwwwwwwWWWWWWWWwwwwwwwWww
wwwwwWwwwwwwwwwwwwwwWwwwwwWWWWWWWWWWwwwwwwWWWWwWwwwwwwwwwWWWWWWWWWWWWWwwwwwwwwww
WwwwwWwwWWWWWWWWWwWwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwwwwwWwwwwWwwWWWW
WWWWWWWWWWwWwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwWwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwww
wwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwWwwwwwwwwwwwwwwwwwwwwwwWww
wwwwwwwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwww
wwwwwwwwwwwwwwwWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwWwwwwwwwwwwwwwwwWw
wwwwwwwwwwwwwwwwwwwwWwwwwwwwwwwwwwwwwwwwwwwwwwWwwwwwvwwwwwwwWWWWWWwwwwwWWWWWWWww
wwwWwWwwwWWWWWWWWWWwwwwwwwWwWwwwWWWWWWWWWWWWWwwwwwwwwwWwWwwwWWWWWWWWWWWwwwwwwwww
wwwwwwwwWwWwwwvwwwwwwwWWWWWWWwwwwwwwwwwwwwwwwwwwwwwWWWWWWWwwwwwwWwwwwwwwwWwwwWww
wwwwwwwWWWWWWWWWWWwwwwwwwwwWwwwwwWwwWwwwwwwwwwwwwwwWwwwwwwwwwWwwwwwwwwwwwwwwWWWW
WWWWWWWWWWWWWwwwwwwwwwwwwwwWwwwwwWwwWwwwwwwwwwwwwwwwwwwwwWwwwwwwwwwwwwwwwWwwwwww
wwwwwwwwwwwwwWWWWWWWWWWWWWWWWWwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWwwwwww
wwwwwwwwwwwwvwwWWwwwwwwwwwwWWWwwwwwwwwwwwwwwWWwwwwwwwwwwwwwwWWwwwwwwwwwwwwwwwWWW
WwWWWWwwWWWWWWwWWWWWWwwWWWWWWWWwWWWWWWWWwwWWWWWWWWWWWWWWWwwwwwwWwwwWWWWWWWWWWWWW
wWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwWWWWWWWWWWWWWWWWWWwwwwwwwwwwWwwWWWWwWwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwWwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwwwwww
wwwwWwwWWWWWWWWWWWWWWWWWWWwWwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwWW
WWWWWWWWWWWWWWWWWWWWWWWWWwWwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWwWWWWWWWwwwwwWWwWW
WWWWwwwwwwwwwwwwwwwwwvwwwWWWwwWWWwwWWwvwwWWwwwwwwwwwwwwWWWwwwwwwwwwwwwwwwwWWwwwW
WwwwwWWWWwWWWWwwWWwWwwwwwwwwwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWww
wwWWwWWWwwwwwWWwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwWwwwwwwwwwwWWWWWWWWWWWWWWWWwwwww
wwwwwwWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWw
wwwwwwWwwwwwwwWWWwvwwwWWwWWWWwvwwwwwwWWWWWWwwwwwwwwwwwwwwwwwwWWWWWWWwwwwwwwwwwww
wwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWW
WWWWWWWWwwwwwwwWwwwwwWWWwWWWWWWWWWwwwwwwwwwwwwwwwwwwwwwwwwwwwWwwwwwwwwwwwwWWWWWW
WWWWWWWWWWwwwwwwwwwwwwwwWWwWwwwwwWWWWWWWWWWWwWWWWWWWWWWWwwWWWWWWWWWWWWWwWwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWwWwwwwwwwww
wwwwwwwwwWWWWWWwwwwwwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWwwwwwwwwwwwwww
wwwwwwwwwWwwwwwwwwwwwwwwwwwwwwwWWWwWWWWWwWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
WWWWWWWWwwwwwwwWwwvwwWWwwwwwwwwwwwwwwwWWWwwwwwwwwwwwwwwwwwwwWWwwwwwwwwwwwwwwwwww
wWWwwwwwwwwwwwwwwwwwwwwWWWWwWWWWWWWWwwwwwwwWwwwwWwwwWWWWWWWWwwwwwwwwwWWWWWWWWwww
wwwwwwwWWWWWWWWWWWWWWWWWWWWWWWWWWWWwWWWwWwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwW
wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwWWWWWWWwwwwwwWwwwwwwWwwwvwWWWWWWWWWWWWWWWW
WWWWWWwwwwwwwwwwwwwwwwwwWwwwwwwwwwwwwwwwwwwwWWWWwwwWwwWWwWWWwWWWWwWWWWWWWWwwwwww
wwwwwwwwwwwwwwwwwwwWwwvwWWWWWWWWWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWwWWWWwWWWWWWWWWWWW
WWWWwwwwwwwwwwwwwwwwwwwwwwwwwwWWWWWWWWWWWWwwwWWWwWwww
\end{procgrass}

\newcommand*{\AhoFont}{\usefont{OT1}{cmfr}{m}{it}\LARGE}
\NabeAzz{40}

% echo プログラム(出力処理のチェックに使っていた…)
\begin{procgrass}{\echo}
wwWWwWWWwvwwWWwWWWwWWWWwvwWWWwwwWwwwWWWWwwwwWWWWWWwwwwwwwwWWWwwwwwwwwwWWWwwwwwww
wwwWWWWwwwwwwwwwwwWwwwwwwwwWWWwWWWWWwWWWWWWWwvWwwwwwwvwWWWWWWWWwwwwwwwwvwWWWWWWW
WWWwwwWwwwwWwwwwWwwwwwwwwwwWwwwwWWWWwwwwwwwWwwwwwwwWwwwwwwww
\end{procgrass}

\noindent\echo{Hello, \string\TeX\string\ world!}

\end{document}
f:id:zrbabbler:20111225012537p:image

もちろん、「ほむほむ」でナベアツすることも可能である。

*1:文書の文字コードUTF-8 である必要があるが、これは単にパッケージファイルの文字コードUTF-8 であるからであって、これを変えれば pLaTeX の他の入力漢字コードの指定でも構わない。UTF-8 にしたのは、XeLaTeX や LuaLaTeX でも使えるようにしたからである。

munepimunepi 2011/12/27 12:47 こっそり、グリーンスターを付けていたりします。

zrbabblerzrbabbler 2011/12/27 23:53 はい、ありがとうございます!

でも、やっぱり、このネタはここで「完了」しているような気がしますね。ラムダ関係の言語の経験が全くない状態から始めていて、10日くらいを費やしているので、もうちょっと発展させたいのですが。コストパフォーマンス悪すぎ。

中身を解説したいという気もあるんですが、何せ TeX と Grass の両方を知らないと理解できないという敷居の高いネタでして……。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証