使用 xstring 编辑输入参数字符串时出现问题

使用 xstring 编辑输入参数字符串时出现问题

我正在尝试\StrDel修改命令中使用的参数。例如,我的.tex文件包含:

\command{Word Anotherword}

我引用的文件.sty包含:

\newcommand{\dosomething}[1]{

\some{#1}

\thing{\StrDel{#1}{ }}

}

我想要它,所以当调用命令时,它包含的命令将被调用如下:

\some{Word Anotherword}

\thing{WordAnotherword}

因此,在第二个命令中\StrDel,删除参数中的空格。但这始终会产生以下错误:

Use of \@item doesn't match its definition. \new@ifnextchar ...served@d = #1\def \reserved@a {#2}\def \reserved@d {#3}\f...

我犯了错误吗?如果没有,有解决方案吗?

答案1

这种方法是否可行取决于应该做什么\thing。例如,如果是,\textit那就没有问题;但如果\thing\label,那么这种方法就行不通。

问题在于\StrDel{a b c}{ }不是字符串abc,而是生成该字符串所需的一组指令,并且\label无法处理这些指令。许多其他命令也会发生同样的情况。

有一个出路:

\newcommand{\something}[1]{%
  \some{#1}%
  \StrDel{#1}{ }[\temp]% remove spaces and store the string in \temp
  \expandafter\thing\expandafter{\temp}%
}

根据\thing,这两个\expandafter命令可能不是必需的(例如无论如何\label都会扩展\temp),但它们不会造成危害。

相关内容