我尝试生成随机练习:
\setvariables[parametres][a=-4, b=2, c=4]
\starttext
Solve:
\startformula
\getvariable{parametres}{c} x + (\getvariable{parametres}{a}+2) x = 5
\stopformula
\stoptext
我想要生成这个:
Solve:
4x-2x = 5
a
请注意,我需要将 ConTeXt 与加号的值相加2
,然后计算结果和的符号:+(-2)x
将是-2x
。
答案1
对于这种一次性的事情,您也可以使用\luaexpr
。
\setvariables[parametres][a=-4, b=2, c=4]
\starttext
Solve:
\startformula
\getvariable{parametres}{c} x
\luaexpr[+d]{\getvariable{parametres}{a}+2} x
\luaexpr[+d]{\getvariable{b}+1}
= 5
\stopformula
\stoptext
可选参数+d
是 lua formatter
(有关完整详细信息,请参阅 cld-mkiv 手册)。可以将其视为C 和类似语言中的。%+d
指定始终打印符号,并指定参数为小数(整数)。printf
+
d
但是如果你要生成一系列练习,我只会在 Lua 中生成所有内容(使用 CLD:ConTeXt Lua 文档)。
答案2
ConTeX 基于 TeX,因此您可以使用 TeX 原始方法:
\setvariables[parametres][a=-4, b=2, c=4]
\newcount\numA
\starttext
Solve:
\startformula
\numA=\numexpr \getvariable{parametres}{a} + 2 \relax
\ifnum\numA<0 \def\sign{-}\numA=-\numA \else\def\sign{+}\fi
\getvariable{parametres}{c} x \sign \the\numA x = 5
\stopformula
aha
\stoptext