Я пытаюсь получить MuPad Matlabs так же красиво и удобно, как MathCad.Pretty MuPad: Вывод назначения, выражения и результата в одной строке - Как создать эту функцию?
Пусть две переменные задания:
x_a:=2*unit::mm;
y_b:=5*unit::mm;
и я хочу prettyfied (набраны Tex), выводимый как
z = x_a + y_b = 7 mm
я уже успел сделать это с помощью 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);
выход:
Это уже выглядит очень многообещающим, я попробую его, как только смогу. И спасибо за интересные ссылки, мне как-то трудно найти эту информацию для Mupad. – thewaywewalk
Работает хорошо. Я бы оставил это открытым немного дольше, так что ваш обширный ответ может привлечь больше внимания? И поскольку вы, кажется, эксперт по Mupad, возможно, вы заинтересованы в том, чтобы помочь мне с моим [последующим вопросом] (http://stackoverflow.com/questions/31786164/define-general-relative-search-path-for -custom-MuPAD-процедуры). – thewaywewalk
На самом деле ваше первое решение не работает (см. Мое редактирование), но второе делает. Я не вижу причины, почему первый работает в вашем случае, а в моем нет. – thewaywewalk