我看到了一个相当意外的结果\NewDocumentCommand
。假设我有一个自定义命令\mybold{}
,如下所示:
\NewDocumentCommand{\mybold}{m}{\mathbf{#1}}
或者\oybold[]
:
\NewDocumentCommand{\oybold}{O{a}}{\mathbf{#1}}
我会预计能够在另一个中引用这些\NewDocumentCommand
,例如以下任何一项:
\NewDocumentCommand{\mmyvec}{m}{\hat\mybold{#1}}
\NewDocumentCommand{\moyvec}{m}{\hat\oybold[#1]}
\NewDocumentCommand{\omyvec}{O{a}}{\hat\mybold{#1}}
\NewDocumentCommand{\ooyvec}{O{a}}{\hat\oybold[#1]}
第一个和第三个只会产生一堆错误(missing $ inserted
,missing } inserted
等等extra }
);而\moyvec[k]
和\ooyvec[k]
会产生以下输出:
(而不是期望的\hat\mathbf{k}
)
我认为这与进入数学模式有关两次。 我怎样才能解决这个问题?
答案1
您希望的参数\hat
不是\mybold{#1}
,\mybold
因此标记应该是\hat{\mybold{#1}}
\hat{\oybold}[k]
使用可选参数版本时,它与重音的基础类似,\oybold
没有可选参数,因此您得到的只是\hat{a}
排版[k]
为文本,它不是命令的参数。
你要\hat{\oybold[#1]}