如何让 xparse 在另一个命令中顺利运行?

如何让 xparse 在另一个命令中顺利运行?

我正在尝试定义一个命令,在必要时在末尾插入一个空格,然后定义一个带星号的相同命令版本不是末尾有一个空格。

我怀疑该问题与\xspace另一个命令有关,但我不知道如何解决它。

最小示例:

\documentclass{article}
\usepackage{xparse, xspace}

\NewDocumentCommand{\setInSC}{sm}{%
  \textsc{#2}%
  \IfBooleanTF{}{%
    \xspace%
  }%
}

\begin{document}

\setInSC{test}should be separated with a space

\setInSC*{test}should not be separated with a space

\end{document}

答案1

您忘记测试第一个参数“星号”,即您的代码中没有#1。将其作为第一个参数\IfBooleanTF

示例输出

\documentclass{article}
\usepackage{xparse, xspace}

\NewDocumentCommand{\setInSC}{sm}{%
  \textsc{#2}%
  \IfBooleanTF{#1}{}{%
    \xspace%
  }%
}

\begin{document}

\setInSC{test}should be separated with a space

\setInSC*{test}should not be separated with a space

\end{document}

相关内容