自动完成列表

自动完成列表

如果可能的话,有人能帮我设计一个通用的、宏伟的方案来完成一般列表吗,如下所示。pgf\foreach可以处理其中一些,但我需要在 之外进行自动完成\foreach。是否必须像我现在所做的那样为每种列表类型定义一个完成方案?

\def\lista{1,...,10,13,...,21}
\def\lista{1,2,...,10,13,15,...,21}
\def\lista{1pt,2pt,...,10pt,13pt,15pt,...,21pt}
\def\lista{1ex,2ex,...,10ex,13ex,15ex,...,21ex}
\def\lista{a,b,1,...,10,13,...,21}
\def\lista{a,b,1,2,...,10,13,...,21}
\def\lista{1,2,a,b,1,...,10,13,...,21}
\def\lista{A,...,S,a,...,s}
\def\lista{A,B,...,S,a,b,...,s}
\def\lista{A,B,1,...,10,a,b,...,f}
\def\lista{a,A,1,...,10,13,...,21}
\def\lista{2^1,2^2,2^3,...,2^10,a^1,a^2,...,a^9}
\def\lista{1_2,2_2,...,5_2,a_2,b_2,...,h_2}
\def\lista{c_2,d_2,...,e_2}
\def\lista{1\pi,...,3\pi}
\def\lista{0\pi,0.5\pi,...,3\pi}
\def\lista{1^\pi,1.5^\pi,...,5.5^\pi}

从完成角度来看,折叠列表如

\def\lista{1,...,10,13,...,21}

基本上与

{1,...,10}
{13,...,21}

答案1

其中一些列表(包括您在末尾突出显示的列表)我无法猜测条目之间的关系。如果在每种情况下您都写下关系是什么,而不是尝试通过示例来展示它,那么您的问题就会得到解决。由于您的循环只会循环遍历\i从 1 向上的整数,因此例如您的最后一个只是

\makeatletter

\newcount\i
\loop
\advance\i 1

\dimen@=\i\p@
\divide\dimen@ by 2
\advance\dimen@ 0.5\p@
\edef\x{\strip@pt\dimen@^\pi}
\show\x
\iftrue
\repeat

这使得:

> \x=macro:
->1^\pi .
\iterate ...\x {\strip@pt \dimen@ ^\pi } \show \x 
                                                  \iftrue \relax \expandafte...
l.14 \repeat

? 
> \x=macro:
->1.5^\pi .
\iterate ...\x {\strip@pt \dimen@ ^\pi } \show \x 
                                                  \iftrue \relax \expandafte...
l.14 \repeat

? 
> \x=macro:
->2^\pi .
\iterate ...\x {\strip@pt \dimen@ ^\pi } \show \x 
                                                  \iftrue \relax \expandafte...
l.14 \repeat

相关内容