我正在编写一个方法的描述,其中每个部分的标题格式如下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]
\$
\thestring
stringstring
\documentclass{article}
\usepackage{stringstrings}
\newcounter{step}
\begin{document}
\removeword[e]{x1 x2 x3}
\removeword{\thestring}
\end{document}