Grass (bxgrassator パッケージ)
「LISP on TeX もいいけど、たまには草を植えてみたい」という人は、bxgrassator パッケージを利用すると、LaTeX 文書で Grass のコードを利用できる。
- grassator パッケージバンドル(GitHub/zr-tex8r)
この中の bxgrassator*.* のファイル(3 つ)が「TeX で実装された」Grass のインタプリタである。インストール手順は過去の記事を参照。ちなみに、ixgrassator.sty の方は LuaLaTeX 用のパッケージで Lua で実装されたインタプリタを用いるものである。
このパッケージを使って、ナベアツを実装してみる。((Grass のコード自体は過去の記事で掲載したものと全く同じであるが、ここでは、\NabeAzz
命令の定義をプレアンブルで行っていることに注意。))
\documentclass[a4paper]{article} \usepackage{bxgrassator} \usepackage{type1cm} \newcommand*{\AhoFont}{\usefont{OT1}{cmfr}{m}{it}\LARGE} %!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! BEGIN Grass code \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} %!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! END Grass code \begin{document} \NabeAzz{40} \end{document}
この文書のコンパイル手順は……そう、「普通の LaTeX 文書」と全く同じである。好きなエンジンでコンパイルできる。(例えば pdflatex nabeazz-grassator
。)これで「普通のナベアツ」の出力が得られる。
なお、「ほむほむ」したい人はこちらへ→test-homuhomu-2.tex。
番外
この一連の「ナベアツ」ネタに参加できなかったプログラミング言語について。
BASIC (BaSiX パッケージ)
TeX 言語で高級言語のインタプリタを実装する、という TeX 芸の先駆けといえるのが、Greene 氏による BaSiX(1990 年)である。これは(昔の)BASIC 言語のインタプリタを plain TeX ↑で動かすものである。ところが、この BaSiX では、(大昔の 8 ビットマシンに標準搭載されていたような)「BASIC の対話環境」((例えば、「30 let x=0
」の行を入力すると、「現在編集中のプログラム」に行番号 30 の行が追加される。「let x=0
」だとその場でコードが実行される。))を再現することを目的としているので、今回の課題である「LaTeX の命令(或いは TeX のマクロ、すなわち \NabeAzz
)をその言語で実装する」用途には全く使えない仕様になっている。(そもそも「TeX 側の入力」に処理結果を出力する機能を持っていない。)
LaTeX 文書作成において参考文献リストの作成で利用されることの多い BibTeX であるが、BibTeX*1を用いてナベアツを実装した極めて変態な人が存在する。ただし、このままでは「BibTeX の言語」のコードを LaTeX 文書に記述することはできないし、「引数を渡す」処理もできていないので、今回の課題を実現するのは無理である。もちろん、この辺りの連携処理を自動化する LaTeX パッケージを実装すれば、「BibTeX(の言語)で \NabeAzz
命令を実装する」ことは可能になるであろうが、それについては賢明なる読者への演習問題としておこう。
(ええと……)