存储 expl3 宏的评估输出

存储 expl3 宏的评估输出

我发现了一个宏,计算子字符串出现的次数,如下对另一个问题的回答。这确实满足了我的要求,至少,当仅将其输出打印到文档时。我想使用输出,并将其传递给不同的命令——具体来说,传递给值\bookmark[level=]。我无法弄清楚如何让它扩展,或如何捕获其输出。我确信这非常简单,也许我只是缺少搜索它的词汇表——但我将不胜感激任何帮助。

有问题的代码:

\ExplSyntaxOn
% \CountSubStr{<substring>}{<string>}
\NewDocumentCommand{\CountSubStr}{ m m }{
  \seq_set_split:Nnn \l_tmpa_seq { #1 } { #2 }
  \int_eval:n {(\seq_count:N \l_tmpa_seq) - 1 }
}
\ExplSyntaxOff

答案1

不确定你想如何\bookmark使用\CountSubStr但这应该可行:

\documentclass{article}

\usepackage{bookmark}

\newcounter{substringcount}

\ExplSyntaxOn

% \CountSubStr{<substring>}{<string>}
\NewDocumentCommand{\CountSubStr}{ m m }
{
    \seq_set_split:Nnn \l_tmpa_seq { #1 } { #2 }
    \setcounter{substringcount}{ \int_eval:n {(\seq_count:N \l_tmpa_seq) - 1 } }
}
\ExplSyntaxOff

\bookmark[level=\thesubstringcount]{Last page}

\begin{document}
    Hello
    \CountSubStr{ab}{abcdeab}
\end{document}

相关内容