删除两个词

删除两个词

我正在编写一个方法的描述,其中每个部分的标题格式如下Step X: <step title>。现在,我想将该部分引用为Step X ("<step title>")。我知道\nameref,但我不知道如何删除字符串的前两个单词。

当尝试使用stringstrings删除前两个单词时,我得到了

的使用\removeword与其定义不符。

最小示例:

\documentclass{article}
\usepackage{stringstrings}

\newcounter{step}

\begin{document}

\removeword\removeword{x1 x2 x3}

\end{document}

怎样才能删除stringstrings前两个单词?

预期用途(更新答案)

(如果我应该将其作为单独的问题提出,我会这样做)

我正在编写一个方法的描述,其中每个部分的标题格式如下Step X: <step title>。现在,我想将该部分引用为Step X ("<step title>")。目前,我正在使用解决方案https://tex.stackexchange.com/a/73710/9075,建议重新定义@currentlabelname。但是,我必须输入两次我的部分名称。

最小示例:

\documentclass{article}
\usepackage{csquotes}
\usepackage{hyperref}

\newcounter{step}

\newcommand{\titleinquotes}[1]{(\enquote{\nameref{sec:#1}})}

\begin{document}

We will see something in Step~\ref{S1} \titleinquotes{S1}.

\refstepcounter{step}
\label{S1}
\section{Step \thestep: Setup Environment}
\label{sec:S1}

\end{document}

问题是如何改变'\titleinquotes'才能得到以下输出

我们将在步骤 1(“设置环境”)中看到一些内容

快速破解

\newcommand{\removedoubleword}[1]{\removeword[e]{#1} \removeword{\thestring}} 
\newcommand{\titleinquotes}[1]{(\enquote{\removedoubleword{\nameref{sec:#1}}})}

不起作用:Use of \\removeword doesn't match its definition.。不使用\nameref,它就可以工作。

答案1

根据stringstring文档,你不能直接嵌套其命令。相反,stringstring操作命令提供了一种特定的可组合性机制:它们将结果存储\thestring作为后续命令的输入。因此需要两个步骤。

大多数命令还会“打印出”结果。这可以通过传递(quiet) 或(encoded) 选项\thestring来抑制。后者确保特殊字符(例如)不会被扩展,这增加了如果输入到另一个命令中的稳定性。[q][e]\$\thestringstringstring

\documentclass{article}
\usepackage{stringstrings}

\newcounter{step}

\begin{document}

  \removeword[e]{x1 x2 x3}
  \removeword{\thestring}

\end{document}

相关内容