将随机变量传递给 fp 函数

将随机变量传递给 fp 函数

我正在尝试创建一个命令,该命令将在 esami 包中为正数显示“+”号,为数字显示无符号。我认为问题在于我试图传递给 \rtink 函数的随机变量的格式。如果我使用整数,该函数可以工作,但我一直无法弄清楚如何传递变量。任何帮助都将不胜感激。

以下是在 eachtest.tex 文件中设计的问题:

\newproblem{prob12
\FPsetpar{a}{1}{9}[-1,1]
\FPsetpar{b}{1}{9}[-1,1]

\newcommand{\rtink}[1]{%
\FPifneg #1 \par $$ \else $+$ \fi
}

\item  If 
\begin{equation*}  \a (x \rtink{\a} \b)=\a x+m \end{equation*} what is the value of $m$?

\vspace{10 mm}
  \begin{answers}{2}\bChoices
    \Ans1 \FPsv{\a*\b} \eAns
    \Ans0 \FPsv{-\a*\b} \eAns   \eFreeze
    \Ans0 \FPsv{\a} \eAns  \eFreeze
    \Ans0 \FPsv{\b} \eAns
    \eChoices\end{answers}
}

这是从 eachtest.tex 文件中提取的 master_new.tex 文件:

\documentclass[a4paper,UKenglish]{article}
\usepackage[shufflerandom,xyz,twocolumns,solutions]{esami}
\usepackage{lmodern,textcomp}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

% +=============================+
% |         DEFINITIONS         |
% +=============================+

\def\examname{The name of the exam}
\def\numcompiti{1}%%% The number of the versions
\date{2013/3/22}%%% THE DATE IN THE FORMAT YYYY/MM/DD
\def\Data{\longdate}%%% or \shortdate: the date in the heading

\begin{document}
\testversioni
\pagestyle{esame}
\whiledo{\thevers<\numcompiti}{\stepvers

% +=============================+
% |       THE SEED              |
% +=============================+

\FPeval\seme{round((\thenomefile+(3*\thevers)):0)}

\randomi=\seme
\permuta

\section*{Mathematics Achievement}
\begin{test}
\begin{questions}
\esercizi{eachtest}
\end{questions}
\end{test}

\closevers
}
\end{document}

答案1

@egreg 对这个命令的看法肯定是正确的。正确的定义\rtink

\newcommand{\rtink}[1]{\FPifneg{#1}-\else+\fi}

此外,您的代码包含一些小问题,可能会导致与您想要的结果不同的结果。

  1. \newproblem{prob12:该命令\newpbroblem只有一个强制参数,即问题的文本,应在定义之后开始\FPsetpar。在构造时,\newproblem不能接受标签或类似的东西。

  2. \FPsetpar{a}{1}{9}[-1,1]:此处您想要一个参数\a,该参数假定为 1 到 9 之间的随机值。您已排除值 -1 和 1,但这不是必需的:参数始终不同于 -1,因为它大于或等于 1,并且要排除值 1,您只需写入\FPsetpar{a}{2}{9}。此外,如果排除的值不止一个,则必须将其放在括号中。

  3. \FPsv{\a*\b}:即使通常你不会收到错误,里面\FPsv最好不要使用\a\b,而只是使用ab,这样你的操作就变成\FPsv{a*b}

  4. \FPsv{\b}:最好写\b,没有\FPsv

  5. 第二和第三个答案中的两个\eFreeze不是必需的:因为您没有使用[random]后面的可选参数\bChoices,所以您的答案不会被打乱。

相关内容