创建一个命令,将输入的字符串逐个标记地连接起来

创建一个命令,将输入的字符串逐个标记地连接起来

首先,xparse我想使用以下命令创建:

\DeclareDocumentCommand{\c}{ s > { \SplitList { ; } } r""}
{
% do something
}

它基本上应该只做以下事情:

  • 如果 s 为假(没有给出星号),则转换"f;g;h;..."f » g » h » ...
  • 如果 s 为真,则转换"f;g;h;..."fgh...(给出星号)

整个目的是能够重新定义命令以基本上逆转顺序,即:

  • 如果 s 为假(没有给出星号),则转换"f;g;h;..."... « h « g « f
  • 如果 s 为真,则转换"f;g;h;..."...hgf(给出星号)

我怎样才能使用“高级函数”很好地做到这一点?我已经在使用,xparse, xstring并且我认为etoolbox或类似的东西可能会有所帮助。我真的不想处理“低级” TeX 编程,如果这有任何意义的话。

答案1

并非真正“高级”,但由于xparse无论如何都会使用并且无论如何SplitList都会expl3

\convert命令使用第一个带星号的参数进行f>g>h拆分,第三个参数用于反转顺序。

它使用一个\seq_...变量,将输入分成;标记并将它们粘合在一起(或有效地替换;>并最终反转顺序。

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn

\DeclareDocumentCommand{\convert}{sr""s}
{
  \seq_set_split:Nnn \l_tmpa_seq {;} {#2}
  \IfBooleanT{ #3 }{%
    \seq_reverse:N \l_tmpa_seq 
  }
  \IfBooleanTF{#1}{%
    \seq_use:Nn \l_tmpa_seq {}%
  }{%
    \seq_use:Nn \l_tmpa_seq {$>$} 
  }
}
\ExplSyntaxOff
\begin{document}
\convert"f;g;h"

\convert*"f;g;h"

\convert*"f;g;h"*

\convert"f;g;h"*


\end{document}

在此处输入图片描述

相关内容