在 ConTeXt 中对变量求和并处理符号表达式

在 ConTeXt 中对变量求和并处理符号表达式

我尝试生成随机练习:

\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

相关内容