假设有两种变量赋值:
x_a:=2*unit::mm;
y_b:=5*unit::mm;
,我要像
z = x_a + y_b = 7 mm
一个prettyfied(排版与特克斯)输出我已经设法通过使用output::mathText(...)这样做:
output::mathText(hold(z)," = " , (z:=hold(x_a+y_b)) , " = " , z)
看起来如所需:
但这并不方便,也不可读。所以我想将它包装成一个宏或功能:
evalPrint(z,x_a+y_b)
我怎么能这样做?
我试了一下:
我写一个程序如下:
evalPrint :=
proc(x,y) begin
output::mathText(hold(x)," = " , (x:=hold(y)) , " = " , x)
end_proc:
,但我只是得到
我缺少什么?
关于horchler's answer:他的第一个解决方案并不知何故无法正常工作,而第二个作用:
程序:
evalPrintVal := proc(x,y) option hold;
begin
output::mathText(x, " = ", evalassign(x,y));
end_proc:
evalPrintEq := proc(x,y) option hold;
begin
output::mathText(x, " = ", evalassign(x,y), " = ", context(y));
end_proc:
evalPrintEq2 := proc(x,y) option hold;
begin
output::mathText(x, " = ", y, " = ", evalassign(x,y));
end_proc:
电话:
evalPrintVal(U_1,15000*unit::V);
evalPrintEq(E_h, U_1*1.05);
evalPrintEq2(E_h, U_1*1.05);
输出: