マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

LaTeX 上で色々と実装してみる話(ナベアツ編-7)

(前回の続き)
Grass (bxgrassator パッケージ)
(参照:アレ

LISP on TeX もいいけど、たまには草を植えてみたい」という人は、bxgrassator パッケージを利用すると、LaTeX 文書で Grass のコードを利用できる。

このパッケージを使って、ナベアツを実装してみる。((Grass のコード自体は過去の記事で掲載したものと全く同じであるが、ここでは、\NabeAzz 命令の定義をプレアンブルで行っていることに注意。))

[nabeazz-grass.tex]
\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 側の入力」に処理結果を出力する機能を持っていない。)

BibTeX

LaTeX 文書作成において参考文献リストの作成で利用されることの多い BibTeX であるが、BibTeX*1を用いてナベアツを実装した極めて変態な人が存在する。ただし、このままでは「BibTeX の言語」のコードを LaTeX 文書に記述することはできないし、「引数を渡す」処理もできていないので、今回の課題を実現するのは無理である。もちろん、この辺りの連携処理を自動化する LaTeX パッケージを実装すれば、「BibTeX(の言語)で \NabeAzz 命令を実装する」ことは可能になるであろうが、それについては賢明なる読者への演習問題としておこう。

(ええと……)

*1:正確にいうと、「BibTeX の文献スタイルファイルの記述言語」(これ自体に名前は無いらしい)である。