如何在纯 TeX 中定义类似 LaTeX 的环境?

如何在纯 TeX 中定义类似 LaTeX 的环境?

如何使用 TeX 基元定义类似 LaTeX 的环境?我刚刚开始使用 Knuth 的 TeX 书学习 TeX,发现很难使用 TeX 基元实现类似 LaTeX 的环境。我所说的环境的一个例子是\begin{document} ... \end{document}。环境是否像 一样实现\def\begin#1\end#1{some conditional statement..}

答案1

基本思想是,\begin{foo}执行\foo\end{foo}执行组\endfoo 内的所有内容\begingroup..\endgroup

因此,忽略错误检查(和新添加的环境挂钩等),普通的 tex 实现将如下所示,我重命名了 begin 和 end 以避免与\end原始内容发生冲突(LaTeX 将其重命名为\@@end


% define environment syntax
\def\zbegin#1{\begingroup\csname#1\endcsname}
\def\zend#1{\csname end#1\endcsname\endgroup}

% a sample environment
\def\table#1{\halign\bgroup#1\cr}
\def\endtable{\crcr\egroup}


\zbegin{table}{\hfil#\quad&#\hfil}
rrr&lll\cr
1&2\cr
33&44
\zend{table}

\bye

在此处输入图片描述

相关内容