strprint

Распечатайте в строку

Блокноты MuPAD® будут демонтированы в будущем релизе. Используйте live скрипты MATLAB® вместо этого.

Live скрипты MATLAB поддерживают большую часть функциональности MuPAD, хотя существуют некоторые различия. Для получения дополнительной информации смотрите, Преобразуют Notebook MuPAD в Live скрипты MATLAB.

Синтаксис

strprint(<All>, <Unquoted>, <NoNL>, <KeepOrder>, object1, object2, …)

Описание

strprint(objects) возвращает строку print(objects) отобразился бы на экране.

strprint возвращает строку, которая содержит выход print отправил бы на экран для тех же аргументов. Эта строка содержит `\n' символы, если выход состоял бы из нескольких линий.

В системах Windows®, каждом \n предшествуется \r, потому что это - традиционная комбинация конца линии, поскольку это - комбинация конца линии, наследованная от CP/M. Примеры в этой документации принимают систему как UNIX®. Также обратите внимание на это с Набором активированного, \rNT, и \b не будет отображен в строке.

Все опции и зависимости от переменных интерпретированы как описано в документации print. Особенно, это означает PRETTYPRINT влияет на выход strprint. Перегрузка print учтен. Смотрите ?print для деталей.

Взаимодействия среды

strprint чувствительно к переменным окружения DIGITS, PRETTYPRINT, и TEXTWIDTH, и к выходным настройкам Pref::floatFormat, Pref::keepOrder, и Pref::trailingZeroes.

Примеры

Пример 1

Строка возвращена strprint, когда распечатано с опцией Unquoted, дает к тому же выходу, как операнды имели бы во-первых:

s := strprint(a*x^2-7):
print(Unquoted, s)
   2
a x  - 7

Это может использоваться, чтобы объединить несколько выходных параметров:

s1 := strprint(a*x^2-7):
s2 := _concat("-" $ TEXTWIDTH)."\n":
s3 := strprint(sin(1/x)):
print(Unquoted, s1.s2.s3)
   2
a x  - 7
---------------------------------------------------------------------------
   / 1 \
sin| - |
   \ x /

В примере выше, вы видите что выход strprint не содержит пробелы, обычно используемые в центрировании. Выход в первом примере был сосредоточен, потому что это использовало только часть текстовой ширины, в то время как строка s1.s2.s3 во втором примере охватывает общую ширину линии и поэтому распечатан выравнивание по левой границе.

Пример 2

В демонстративных целях давайте запишем область, которая помещает выражение в поле. Мы используем факт что strprint возвращает строки начиная с новой строки, output::fence и индексируемого присвоения на строки:

domain box
  print := proc(e)
             local ex, str, w;
             save TEXTWIDTH;
           begin
             if TEXTWIDTH > 15 then 
               TEXTWIDTH := TEXTWIDTH - 4;
             end_if;
             ex := extop(e, 1);
             str := strprint(All, ex);
             w := str[5]+4;
             str := output::fence("| ", " |", 
                                  "\n".str[1]."\n",
                                  str[5], str[6]+1);
             str[1..w]     := "+"._concat("-"$w-2)."+";
             str[-w-1..-2] := "+"._concat("-"$w-2)."+";
             str;
           end_proc;

   new := x -> new(dom, x);
end_domain
print(Plain, box(a), box(sin(1/x)))
       +----------+
+---+  |    / 1 \ |
| a |, | sin| - | |
+---+  |    \ x / |
       +----------+
print(Plain, box(box(hold(E=m*c^2))))
+--------------+
| +----------+ |
| |        2 | |
| | E = m c  | |
| +----------+ |
+--------------+

Пример 3

Как последний пример, мы реализуем метод печати для матриц по 5:

M5 := Dom::Matrix(Dom::IntegerMod(5))

Функция стандартного вывода просто помещает “mod 5” позади каждой записи, наследованной от выходного метода Dom::IntegerMod(5):

A := M5([[1,2,3,4],[5,6,7,8],[-2,-3,0,1]])

Мы теперь заменяем этот метод:

M5::print := proc(A)
               local str, h1, w1, h, w, b;
             begin
               [str, h1, w1, h, w, b] := strprint(All, expr(A));
               _concat(str, " " $ w, "[mod 5]");
             end_proc:
print(A):
/ 1, 2, 3, 4 \
|            |
| 0, 1, 2, 3 |
|            |
\ 3, 2, 0, 1 /
              [mod 5]

В качестве альтернативы мы можем установить [mod 5] прямо ниже скобок:

M5::print := proc(A)
               local str;
             begin
               str := strprint(expr(A));
               str[-1..-1] := " [mod 5]";
               str
             end_proc:
print(A):
/ 1, 2, 3, 4 \
|            |
| 0, 1, 2, 3 |
|            |
\ 3, 2, 0, 1 / [mod 5]

Параметры

object1, object2, …

Любые объекты MuPAD®

Опции

All

Когда опция All дан, strprint возвращает дополнительную информацию о строке, сгенерированной путем печати. А именно, это возвращает список, состоящий из

  1. отформатированная строка,

  2. высота (в символах) первой линии,

  3. ширина первой линии,

  4. высота полной строки,

  5. ширина полной строки,

  6. базовая линия, считаемая сверху донизу.

Пример 2 содержит пример кода, который использует эту информацию.

Unquoted

Отобразите символьные строки без кавычек и с расширенными управляющими символами '\n'T, и '\b'.

NoNL

Как Unquoted, но никакая новая строка не помещается в конец. PRETTYPRINT неявно установлен в FALSE.

KeepOrder

Отобразите операнды сумм (типа "_plus") всегда во внутреннем порядке.

Возвращаемые значения

DOM_STRING или список DOM_STRING и пять целых чисел.

Перегруженный

Смотрите также

Функции MuPAD