我正在编写一些对传递给函数的值的错误检查,如果值不正确,则在将它们传递给之前引发错误\fp_eval
。据我所知,对的调用\fp_eval
弄乱了错误消息,我无法显示它们。
这是我想要实现的 MWE。这是一个非常复杂的代码的净化版本,但我缩小了它的范围,如果它看起来没有什么意义,我深表歉意。
\documentclass{article}
\ExplSyntaxOn
\msg_new:nnn { module } { invalid-option }{ Value~'#2'~invalid~for~"#1"~#3.}
\cs_new:Npn \__module_Function:n #1
{
\str_case_e:nnF {#1}
{
{ N } { 0.2 }
{ A } { 0.3 }
}
{ \msg_error:nnxxx { module } { invalid-option } { Function } {#1} {\msg_line_context:} }
}
\cs_new:Npn \__module_OtherFunction:n #1
{
\fp_eval:n {2 * (\__module_Function:n {#1})}
}
\NewExpandableDocumentCommand \test { m }{%
\__module_Function:n {#1}
}
\NewExpandableDocumentCommand \otherTest { m }{%
\__module_OtherFunction:n {#1}
}
\ExplSyntaxOff
\begin{document}
\test{A}
\test{N}
% \test{X} %PRINT --> Package module Error: Value 'X' invalid for "Function" on line 37.
\otherTest{A}
\otherTest{N}
\otherTest{X} % Cannot print this error
\end{document}
使用错误值对的调用\test
会引发正确的错误,但是对的调用\otherTest
却给出了此错误:
! You can't use `\edef' after \the.
<argument> \cs_set_nopar:Npx
我该如何避免这个问题才能正确引发我的错误?