【发布时间】:2010-10-14 06:51:35
【问题描述】:
我需要一个宏,它可以从如下所示的字符串中提取成对的数字:
n1-m1,n2-m2,n3-m3,n4-m4 (it could be longer)
其中 n1,m1,n2,m2,... 是从 0 到 15 的数字。我怎样才能得到 (n1,m1) 和 (n2,m2), (n3,m3) 等对在我的宏里面?我需要每对使用一次,之后如果需要,我可以忽略这对。
假设每个数字都是一个 2 位数的数字(这不是一件优雅的事情),并且我在这个论坛中删除了 Debilski 找到的代码,我设法让第一对执行以下操作:
\documentclass[11pt]{article}
\def\macroGetPairs #1{\getPairs#1.\wholeString}
\def\getPairs#1#2-#3#4,#5\wholeString {
\if#1.%
\else
% Test if pair was successfully extracted
Got pair (#1#2,#3#4). Still left: #5\\
% Begin recursion
%\takeTheRest#5\ofTheString
\fi}
\def\takeTheRest#1\ofTheString\fi
{\fi \getPairs#1\wholeString}
\begin{document}
\macroGetPairs{10-43,40-51,60-73,83-97}
\end{document}
但是,我不确定如何让递归为我工作以获取其余的对。我以为只是取消注释该行
%\takeTheRest#5\ofTheString
应该这样做,但它不起作用。注意宏的测试调用是:
\macroGetPairs{10-43,40-51,60-73,83-97}
有什么建议吗?非常感谢,
ERM
【问题讨论】: