抱歉,我的英语很差。我尽力描述我的问题。
以下是一个例子
\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]
之间有一个空格)。a
b
如果我想要某些东西\uline{\test[a b]{c d}}
正常工作,我该怎么做?
谢谢!
答案1
\uline
通过在空格处拆分其参数来开始其工作。大括号在进行这种拆分时不会被考虑,但是没有办法排除那些出现在括号。这最终会导致\test[a
作为一个单独的块进行检查,而这个块将会破裂。
\test[{a b}]{c d}
应该做。
也许你会更幸运lua-ul
(这需要 LuaLaTeX)。