\uline{} 错误中的 xparse 命令可选参数

\uline{} 错误中的 xparse 命令可选参数

抱歉,我的英语很差。我尽力描述我的问题。

以下是一个例子

\usepackage{ulem}
\usepackage{xparse}
\NewDocumentCommand{\test}{o m}{
    % #1#2
}
\begin{document}

%\uline{\test[ab]{c d}}  %fine
\uline{\test[a b]{c d}}

\end{document}

日志:

Runaway argument?
\ERROR {c d}\xdef \UL@spfactor {\the \spacefactor } \UL@end *  
./test.tex:60: Paragraph ended before \test  was complete.
<to be read again> 
                   \par 
l.60 
     
I suspect you've forgotten a `}', causing me to apply this
control sequence to too much text. How can we recover?
My plan is to forget the whole thing and hope for the best.

\uline{\test[ab]{c d}}很好。

\uline{\test[a b]{c d}}引发了一个错误,它们之间的区别在于可选参数[ab]和(和[a b]之间有一个空格)。ab

如果我想要某些东西\uline{\test[a b]{c d}}正常工作,我该怎么做?

谢谢!

答案1

\uline通过在空格处拆分其参数来开始其工作。大括号在进行这种拆分时不会被考虑,但是没有办法排除那些出现在括号。这最终会导致\test[a作为一个单独的块进行检查,而这个块将会破裂。

\test[{a b}]{c d}应该做。

也许你会更幸运lua-ul(这需要 LuaLaTeX)。

相关内容