我正在尝试定义一个命令,在必要时在末尾插入一个空格,然后定义一个带星号的相同命令版本不是末尾有一个空格。
我怀疑该问题与\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}