“Esami” 包:\randestrai 和 \sqrt 不能一起工作吗?

“Esami” 包:\randestrai 和 \sqrt 不能一起工作吗?

“esami”包中的命令\randestrai允许定义一组元素,以便从中进行随机选择,例如一组公式。它适用于包含 latex 命令的公式,例如,我可以安全地使用

\randestrai{\frac{1}{2}x+1,2x-\frac{1}{2}}{formula}

或者

\randestrai{A \to B, \overline{A} \land B}{formula}

但是,一旦我\sqrt在其中一个元素中使用该命令,就会出现一条错误消息,告诉我有一个实际上不存在的多余的“}”。

例如:如果我写

\randestrai{\sqrt 2, 1}{formula}

我收到错误信息:

! \reserved@a 的参数有一个额外的 }。\par l.10 \randestrai{\sqrt 2, 1}{formula} 我遇到了一个似乎不匹配任何内容的 `}'。

这是为什么?有解决方法吗?

答案1

\sqrt是一个放在那里有风险的命令(这取决于如何\randestrai实施方式)。

用不同的方式让它变得健壮:

\documentclass{article}
\usepackage{esami}
\usepackage{etoolbox}

\robustify{\sqrt}

\date{2018/11/02}

\begin{document}

\randestrai{\frac{1}{2}x+1,2x-\frac{1}{2}}{formula}
$\formulai$

\randestrai{A \to B, \overline{A} \land B}{formula}
$\formulai$

\randestrai{\sqrt{4+3}, \sqrt{2+5}}{formula}
$\formulai$

\end{document}

在此处输入图片描述

答案2

的定义\sqrt\@ifnextchar [\@sqrt \sqrtsign(见\sqrtsign 和 \sqrt),它检查可选参数(根号)。似乎\randestrai由于这个定义,列表处理在某种程度上中断了。作为一种解决方法,您可以绕过检查并直接使用\sqrtsign不带数字的平方根。

梅威瑟:

\documentclass{article}
\usepackage{esami}
\date{2018/04/21}%%% THE DATE IN THE FORMAT YYYY/MM/DD
\begin{document}
\randestrai{\frac{1}{2}x+1,2x-\frac{1}{2}}{formula}
$\formulai$

\randestrai{A \to B, \overline{A} \land B}{formula}
$\formulai$

\randestrai{\sqrtsign{4+3}, \sqrtsign{2+5}}{formula}
$\formulai$

\end{document}

结果:

在此处输入图片描述


编辑:一般来说,特别是对于添加索引,解决egreg问题是首选。但是,您可以定义一个平方根命令,该命令可以在\randestrai不健壮的情况下使用:

\def\sqsciatto#1#2{{}^{\scriptscriptstyle #2}\mkern-11mu\sqrtsign{#1}}

\randestrai{\sqsciatto{4+3}{7}, \sqsciatto{2+5}{3}}{formula}
$\formulai$

结果:

在此处输入图片描述

相关内容