вывод ::
Поместите разделители вокруг многострочных строк
Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.
Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразовывают Notebook MuPAD в Live скрипты MATLAB.
output::fence(left
, right
, string
, <width, <base>
>)
output::fence(left, right, string)
заключает многострочную строку в разделители, обозначенные left
и right
Можно использовать output::fence
в сочетании с strprint
, чтобы перегрузить print
(и таким образом, стандартный экран вывод) для симпатичной печати. Обратите внимание на то, что это не влияет набранный, выводят.
Установите TEXTWIDTH
на 75:
TEXTWIDTH := 75:
Во-первых, задайте область, которая использует output::fence
для вывода:
domain Fence print := x -> output::fence("(", ")", extop(x, 1)); new := x -> new(dom, x); end_domain:
Fence
ожидает строку в своем конструкторе. Вывод использует output::fence
, чтобы поместить круглые скобки вокруг входа:
print(Plain, Fence("abc"))
(abc)
Строки высоты два только частично помещаются в круглых скобках для непротиворечивости с симпатичным принтером:
print(Plain, Fence("abc\ndef"), sin(x^2))
abc 2 (def), sin(x )
Строки высоты больше чем два полностью заключаются в скобки:
print(Plain, Fence("abc\ndef\nghi"))
/ abc \ | def | \ ghi /
Установите TEXTWIDTH
на 75:
TEXTWIDTH := 75:
Следующий шаг в использовании output::fence
должен заключить выражения в круглые скобки. Для этого информация от strprint
полезна:
domain FenceExpr print := proc(x) local str, h1, w1, h, w, b; begin [str, h1, w1, h, w, b] := strprint(All, extop(x)); output::fence("{", "]", str, w, b); end_proc; new := x -> new(dom, x); end_domain:
Шестой операнд возвращаемого значения strprint(All, …)
должен быть дан output::fence
, чтобы выровнять базовые линии правильно:
print(Plain, FenceExpr(x), FenceExpr(x^2), FenceExpr(x^2/2*y))
{ 2 -- 2 { x y | {x], {x ], { ---- | { 2 --
strprint
реагирует на TEXTWIDTH
и может возвратить строку, состоящую или больше чем одну логическую строку. В этом случае ограждение возвращаемая строка приводит к странным результатам:
print(Plain, FenceExpr(_plus(x.i $ i = 0..30)))
{ x0 + x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + x12 + x13 \ -- { \ | { + x14 + x15 + x16 + x17 + x18 + x19 + x20 + x21 + x22 + x23 + x24 + x\ 25 | { \ | { + x26 + x27 + x28 + x29 + x30 \ --
Здесь, строка с добавленными символами разделителя слишком широка для TEXTWIDTH
. Кроме того, output::fence
не позволяет вам управлять разрывами строки. Поэтому это - хорошая практика, чтобы не помещать большие разделители налево и право на длинные строки. Например, abs
распечатывает в функциональном обозначении для длинных аргументов:
print(Plain, abs(_plus(x.i $ i = 0..30)))
abs(x0 + x1 + x2 + x3 + x4 + x5 + x6 + x7 + x8 + x9 + x10 + x11 + x12 + x13 + x14 + x15 + x16 + x17 + x18 + x19 + x20 + x21 + x22 + x23 + x24 + x25 + x26 + x27 + x28 + x29 + x30)
|
Строки, указывающие на тип разделителя: "(", ")", "[", "]", "[+", "+]", "{", "}", "|", "|", или "|". |
|
Строка, чтобы заключить |
|
Ширина строки, чтобы заключить. Значения по умолчанию к ширине самой широкой строки в |
|
Базовая линия строки, считаемой от первой строки. Значения по умолчанию к нижней строке строки. Если установлено в |
Строка