\gobblechar 命令在 stringstrings 包中不起作用?

\gobblechar 命令在 stringstrings 包中不起作用?

我正在使用 stringstrings 包。它有一个名为 \gobblechar 的命令,可以删除字符串或标记中的第一个字符。请参阅下面的 MWE。

\documentclass{article}
\usepackage{stringstrings}
\begin{document}
\def\myAnyString{\gobblechar{v}{Any String}}
\myAnyString
\end{document}

我期望“任何字符串”的第一个字符将被删除。因此,我期望的输出\myAnyString将是ny String

然而输出依然是Any String

在文档中,它说的结果\gobblechar是 \def'ed,而不是 \edef'ed。目前我不确定这是否相关,但我知道它非常重要。

我认为我的 MWE 中没有发生宏扩展。但由于我已经给出/执行了命令\myAnyString,因此它一定已经扩展了。然而,似乎还没有。

还有其他包可以完成这项工作,例如 xstring 包中的 \StrGobbleLeft,但如果参数包含命令(例如,如果Any String变为\textbf{Any String}),\StrGobbleLeft则会失败。但\gobblechar{v}{\textbf{Any String}}仍然可以工作,但其输出仍然Any String只是粗体,但第一个字符仍然不会被删除。

请寻求您的帮助。

答案1

您误解了它的v用途:

\gobblechar[v]{Any String}

会输出“ny String”,但\gobblechar{v}不会输出任何内容。请注意使用方括号而不是花括号。and[v]可以省略。

然而,你\def不是设置\myAnyStringny String。为此,您需要

\gobblechar[q]{Any String}\edef\myAnyString{\thestring}

但请注意,空格将变成\(反斜杠空格)。

由于不太清楚你的目的是什么,我无法透露更多信息。

相关内容