繁体   English   中英

LaTeX:在字符串中使用一些字符

[英]LaTeX: Use some characters in a string

我需要一个宏,该宏从看起来像这样的字符串中提取数字对:

  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}

有什么建议么? 非常感谢你,

企业风险管理

这似乎使您的测试生效:

\documentclass{article}

\def\macroGetPairs#1{\getPairs#1,.\wholeString}
\def\getPairs#1#2-#3#4,#5\wholeString {%
  Got pair (#1#2,#3#4).\\
\if#5.\else%
  \getPairs#5\wholeString
\fi}

\begin{document}
\noindent\macroGetPairs{10-43,40-51,60-73,83-97}
\end{document}

您的代码基本上可以正常工作,但是\\getPairs无法匹配其在最终扩展中的输入( \\getPairs 83-97 )。 您的递归结束测试( \\if#1. )也正在测试#1而不是#5 ,这就是我在这里所做的。 也许如果有其他方法可以将参数格式化为\\getPairs ,那将是\\getPairs

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM