TeXで色々な無限ループ
小ネタ.思うところがあったのでいくつか試してみた.
自身が再帰的に展開されていく例
TeXで無限ループやる場合は大抵これ[要出典].実装法はいくつかある.
単純なマクロ
\documentclass{article} \begin{document} \newcommand\hoge{\hoge} \hoge \end{document}
よくやる.
\aftergroup
\documentclass{article} \begin{document} \newcommand\hoge{{\aftergroup\hoge}} \hoge \end{document}
\aftergroupにより,\hogeが波閉じ括弧(グループの終了)の直後に挿入される.結構使う.
\afterassignment
\documentclass{article} \begin{document} \newcount\fuga \newcommand\hoge{\afterassignment\hoge\fuga=0 } \hoge \end{document}
\aftergroupと同様に,代入の終了時に\hogeが挿入される.
垂直モードに移行しない\par
\documentclass{article} \begin{document} \def\par{} hoge \end{document}
どこで見たか思い出せないけど,割と面白い例.TeXは\parを挿入することで,垂直モードに移行しようとする.オリジナルの\parには垂直モードに移行する機能があるが,この例では,\defすることによってその機能を奪っている.結果,垂直モードに移行できない.で,水平モードのままなのでTeXが\parを挿入し,……を無限に繰り返す.なぜこんな仕様になってしまったんだ.
追記: あった
水平モードにおける垂直モード用グルーと\par