読者です 読者をやめる 読者になる 読者になる

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