如何定义命令来选择嵌套组?

如何定义命令来选择嵌套组?

假设使用组来定义一对结构(2 元组)

{{<tokens1>}{<tokens2>}}

是否可以定义一个命令\first#1{...}(和\last#1{...}),以周围的组作为其单个参数,扩展为<tokens1>消耗 {<tokens2>}(反之亦然)?如果是,怎么办?

经过消耗我的意思是扩展到\relax或空的标记列表(或任何最合适的模式扩大至无)。

这是 LISP 样式递归列表的实现。

优先考虑 TeX-core 解决方案。

答案1

%!TEX TS-program = pdftex

\catcode`@=11
\long\def\@firstoftwo#1#2{#1}
\long\def\@secondoftwo#1#2{#2}
\def\first#1{\@firstoftwo#1}
\def\last#1{\@secondoftwo#1}
\catcode`@=12

\first{{+tokens1+}{--tokens2--}}

\last{{+tokens1+}{--tokens2--}}

\bye

在此处输入图片描述

当然,如果你没有(或者不想)使用 LaTeX,那就没必要使用\@firstoftwowhile\firstoftwo了。

相关内容