Print a warning when translating subscripted functions
[maxima.git] / doc / info / ru / Input.texi
blob15c7fed53ee1861869e459937abc48156f07aa5d
1 @c Language=Russian
2 @c Encoding=UTF-8
3 @c File=Input.texi
4 @c OriginalRevision=1.66
5 @c TranslatedBy: (c) 2008-02 Sergei Shmakov <chivorotkiv@omich.net>
7 @menu
8 * Комментарии::
9 * Файлы::                       
10 * Функции и переменные для ввода и вывода::
11 @end menu
13 @node Комментарии, Файлы, Ввод и вывод, Ввод и вывод
14 @section Комментарии
16 В Maxima любой текст, расположенный между @code{/*} и @code{*/}, является комментарием.
18 Анализатор Maxima обрабатывает комментарии как пробелы, чтобы проще было различать лексемы
19 во входном потоке, комментарий всегда завершает лексему.
20 Следующий ввод @code{a/* foo */b} содержит две лексемы @code{a} и @code{b}, а не
21 одну @code{ab}.
22 Во всех остальных случаях комментарии игнорируются, что бы в них ни находилось.
24 Комментарии могут иметь сколько угодно уровней вложенности. Разделители
25 @code{/*} и @code{*/} образуют соответствующие пары. Количество открывающих
26 разделителей @code{/*} должно быть равно количеству закрывающих @code{*/}.
28 Примеры:
30 @c ===beg===
31 @c /* aa is a variable of interest */  aa : 1234;
32 @c /* Value of bb depends on aa */  bb : aa^2;
33 @c /* User-defined infix operator */  infix ("b");
34 @c /* Parses same as a b c, not abc */  a/* foo */b/* bar */c;
35 @c /* Comments /* can be nested /* to any depth */ */ */  1 + xyz;
36 @c ===end===
37 @example
38 (%i1) /* aa is a variable of interest */  aa : 1234;
39 (%o1)                         1234
40 (%i2) /* Value of bb depends on aa */  bb : aa^2;
41 (%o2)                        1522756
42 (%i3) /* User-defined infix operator */  infix ("b");
43 (%o3)                           b
44 (%i4) /* Parses same as a b c, not abc */  a/* foo */b/* bar */c;
45 (%o4)                         a b c
46 (%i5) /* Comments /* can be nested /* to any depth */ */ */  1 + xyz;
47 (%o5)                        xyz + 1
48 @end example
50 @opencatbox{Категории:}
51 @category{Синтаксис}
52 @closecatbox
54 @node Файлы, Функции и переменные для ввода и вывода, Комментарии, Ввод и вывод
55 @section Файлы
56 Файл -- это область на определенном запоминающем устройстве, содержащая данные или текст.
57 Файлы на дисках как-бы группируются в "директории", которые являются просто списками файлов.
58 Для работы с файлами существуют следующие команды: 
59 @code{save},
60 @code{load},
62 @code{loadfile},
63 @code{stringout},
64 @code{batch},
65 @code{demo},
66 @code{writefile},
67 @code{closefile}
69 @code{appendfile}.
71 @node Функции и переменные для ввода и вывода,  , Файлы, Ввод и вывод
72 @section Функции и переменные для ввода и вывода
74 @defvr {Системная переменная} __
75 @ifinfo
76 @vrindex Текущее входное выражение.
77 @end ifinfo
78 @code{__} - введенное выражение, обрабатываемое в данный момент.
79 То есть, пока вычисляется @var{expr}, @code{__} равно @var{expr}.
81 Введенное выражение присваивается переменной @code{__} до упрощения или вычисления.
82 Однако, значение @code{__} упрощается (но не вычисляется) во время вывода.
84 @code{__} распознается функциями @code{batch} и @code{load}.
85 В файле, обрабатываемом с помощью @code{batch}, @code{__} означает то же самое,
86 что и в режиме диалога. Когда файл обрабатывается функцией @code{load}, @code{__}
87 имеет значения последнего, введенного в режиме диалога или пакетном файле, выражения.
88 @code{__} не принимает значения выражений, которые вводятся в обрабатываемом файле.
89 В частности, если @code{load (@var{filename})} вызывается в режиме диалога, 
90 то во время выполнения файла @code{__} имеет значение @code{load(@var{filename})}.
92 См. также @code{_} и @code{%}.
94 Примеры:
96 @c ===beg===
97 @c print ("I was called as", __);
98 @c foo (__);
99 @c g (x) := (print ("Current input expression =", __), 0);
100 @c [aa : 1, bb : 2, cc : 3];
101 @c (aa + bb + cc)/(dd + ee + g(x));
102 @c ===end===
103 @example
104 (%i1) print ("I was called as", __);
105 I was called as print(I was called as, __) 
106 (%o1)              print(I was called as, __)
107 (%i2) foo (__);
108 (%o2)                     foo(foo(__))
109 (%i3) g (x) := (print ("Current input expression =", __), 0);
110 (%o3) g(x) := (print("Current input expression =", __), 0)
111 (%i4) [aa : 1, bb : 2, cc : 3];
112 (%o4)                       [1, 2, 3]
113 (%i5) (aa + bb + cc)/(dd + ee + g(x));
114                             cc + bb + aa
115 Current input expression = -------------- 
116                            g(x) + ee + dd
117                                 6
118 (%o5)                        -------
119                              ee + dd
120 @end example
122 @opencatbox{Категории:}
123 @category{Глобальные переменные}
124 @closecatbox
126 @end defvr
128 @defvr {Системная переменная} _
129 @ifinfo
130 @vrindex Предыдущий ввод
131 @end ifinfo
133 @code{_} - самое последнее из введенных выражений (таких как @code{%i1}, @code{%i2}, @code{%i3}, ...).
135 Введенное выражение присваивается переменной @code{_} до упрощения или вычисления.
136 Однако, это значение упрощается (но не вычисляется) во время вывода.
138 @code{_} обрабатывается функциями @code{batch} и @code{load}. 
139 Во время обработки файла функцией @code{batch} переменная @code{_} означает то же, что и в
140 режиме диалога.
141 Когда файл обрабатывается функцией @code{load}, значение переменной @code{_} принимает
142 последнее вычисленное выражение, которое было введено в диалоговом режиме или пакетном файле.
143 Выражения, вводимые в обрабатываемом файле, не присваиваются переменной @code{_}.
145 См. также @code{__} и @code{%}.
147 Примеры:
149 @c ===beg===
150 @c 13 + 29;
151 @c :lisp $_
152 @c _;
153 @c sin (%pi/2);
154 @c :lisp $_
155 @c _;
156 @c a: 13$
157 @c b: 29$
158 @c a + b;
159 @c :lisp $_
160 @c _;
161 @c a + b;
162 @c ev (_);
163 @c ===end===
164 @example
165 (%i1) 13 + 29;
166 (%o1)                          42
167 (%i2) :lisp $_
168 ((MPLUS) 13 29)
169 (%i2) _;
170 (%o2)                          42
171 (%i3) sin (%pi/2);
172 (%o3)                           1
173 (%i4) :lisp $_
174 ((%SIN) ((MQUOTIENT) $%PI 2))
175 (%i4) _;
176 (%o4)                           1
177 (%i5) a: 13$
178 (%i6) b: 29$
179 (%i7) a + b;
180 (%o7)                          42
181 (%i8) :lisp $_
182 ((MPLUS) $A $B)
183 (%i8) _;
184 (%o8)                         b + a
185 (%i9) a + b;
186 (%o9)                          42
187 (%i10) ev (_);
188 (%o10)                         42
189 @end example
191 @opencatbox{Категории:}
192 @category{Работа в консоли}
193 @category{Глобальные переменные}
194 @closecatbox
196 @end defvr
198 @defvr {Системная переменная} %
199 @ifinfo
200 @vrindex Предыдущий выход
201 @end ifinfo
202 @code{%} - вывод (@code{%o1}, @code{%o2}, @code{o3}, ...) последнего обработанного
203 выражения, даже если он не выводится.
205 @code{%} обрабатывается командами @code{batch} и @code{load}.
206 В файле, обрабатываемом командой @code{batch}, @code{%} имеет то же значение, что и
207 в режиме диалога. В файле, обрабатываемого командой @code{load}, Значение @code{%} принимает
208 вывод последнего обработанного в диалоговом режиме выражения. Переменной @code{%} не присваивается
209 вывод выражений обрабатываемого файла.
211 См. также @code{_}, @code{%%} и @code{%th}.
213 @opencatbox{Категории:}
214 @category{Работа в консоли}
215 @category{Глобальные переменные}
216 @closecatbox
218 @end defvr
220 @defvr {Системная переменная} %%
221 @ifinfo
222 @vrindex Предыдущий результат в составном выражении
223 @end ifinfo
224 В составных выражениях таких как @code{block}, @code{lambda}, или @code{(@var{s_1}, ..., @var{s_n})},
225 @code{%%} - значение предыдущего утверждения. К примеру выражения,
227 @example
228 block (integrate (x^5, x), ev (%%, x=2) - ev (%%, x=1));
229 block ([prev], prev: integrate (x^5, x),
230                ev (prev, x=2) - ev (prev, x=1));
231 @end example
233 дадут один и тот же результат, то есть @code{21/2}.
235 Составное выражение может быть частью другого составного выражения. И в случае простого утверждения,
236 и в случае, когда утверждение является составным выражением, @code{%%} принимает значение предыдущего утверждения.
237 К примеру,
239 @example
240 block (block (a^n, %%*42), %%/6)
241 @end example
243 выдаст @code{7*a^n}.
245 Внутри составного утверждения, значение @code{%%} можно проверить в диалоге
246 команды @code{break}. К примеру, следующее выражение
248 @example
249 block (a: 42, break ())$
250 @end example
252 открывает диалог, в котором результатом ввода @code{%%;} будет @code{42}.
254 В первом утверждении составного выражения или вне составного выражения
255 переменная @code{%%} не определена.
257 Переменная @code{%%} распознается функциями @code{batch} и @code{load},
258 и имеет то же значение, что и в режиме диалога.
260 См. также @code{%}.
262 @opencatbox{Категории:}
263 @category{Глобальные переменные}
264 @closecatbox
266 @end defvr
268 @defvr {Управляющая переменная} %edispflag
269 Значение по умолчанию: @code{false}
271 Когда @code{%edispflag} установлена равной @code{true}, Maxima отображает @code{%e} отрицательной
272 степени. К примеру, @code{%e^-x} отображается как @code{1/%e^x}.
273 @c тут бы я добавил "см. также exptdispflag", но в оригинале нету.
275 @opencatbox{Категории:}
276 @category{Экспоненциальные и логарифмические функции}
277 @category{Флаги переменные вывода}
278 @closecatbox
280 @end defvr
282 @deffn {Функция} %th (@var{i})
283 @ifinfo
284 @fnindex N-ный по счету предыдущий вывод
285 @end ifinfo
286 Значение @var{i}-го предыдущего вывода. То есть, если следующим вычисленным выражением
287 будет вывод с номером @var{n}, то @code{%th (@var{m})} примет значение вывода с номером (@var{n} - @var{m}).
289 @code{%th} полезна в пакетных @code{batch}-файлах или в ссылках на группу выведенных выражений.
290 К примеру,
292 @example
293 block (s: 0, for i:1 thru 10 do s: s + %th (i))$
294 @end example
296 присвоит переменной @code{s} сумму последних десяти выведенных выражений.
298 @code{%th} обрабатывается функциями @code{batch} и @code{load}.
299 В файле, обрабатываемом функцией @code{batch}, @code{%th} означает то же, 
300 что и в режиме диалога. В файле, обрабатываемом командой @code{load}, 
301 @code{%th} ссылается на выведенные выражения, которые были вычислены последними в режиме диалога
302 или пакетном файле. @code{%th} не ссылается на выражения, выводимые в процессе работы @code{load}.
304 См. также @code{%}.
306 @opencatbox{Категории:}
307 @category{Работа в консоли}
308 @closecatbox
310 @end deffn
312 @deffn {Специальный символ} ?
313 @ifinfo
314 @fnindex Вызов документации
315 @end ifinfo
316 Стоящий перед именем функции или переменной символ @code{?} означает что
317 это имя функции или переменной из Lisp, а не из Maxima.
318 К примеру, @code{?round} означает Lisp-функцию @code{ROUND}.
319 См. дополнительно @ref{Lisp и Maxima}.
321 Запись @code{? word} (вопросительный знак и следующее за ним слово разделены пробелом)
322 эквивалентна записи @code{describe("word")}.
323 Вопросительный знак должен находиться в начале строки ввода, иначе он не определится
324 как запрос на документацию.
326 @opencatbox{Категории:}
327 @category{Справка}
328 @category{Работа в консоли}
329 @closecatbox
331 @end deffn
333 @deffn {Специальный символ} ??
334 @ifinfo
335 @fnindex Вызов документации (неточный поиск)
336 @end ifinfo
338 Запись @code{?? word} (@code{??} и следующее за ним слово разделяются символом пробела)
339 эквивалентна записи @code{descrive("word", inexact)}.
341 @opencatbox{Категории:}
342 @category{Справка}
343 @closecatbox
345 @end deffn
347 @defvr {Управляющая переменная} absboxchar
348 Значение по умолчанию: @code{!}
350 Символ @code{absboxchar} используется для изображения знака модуля вокруг, 
351 выражений, занимающих по высоте больше одной строчки.
353 @opencatbox{Категории:}
354 @category{Флаги и переменные вывода}
355 @closecatbox
357 @end defvr
359 @defvr {Управляющая переменная} file_output_append
360 Значение по умолчанию: @code{false}
362 @code{file_output_append} управляет тем, будет ли вывод в функции добавляться в конец
363 или замещать содержимое выводимого файла.
364 Когда @code{file_output_append} равна @code{true}, такие функции добавляют вывод к файлу,
365 иначе выводимый файл переписывается заново.
367 Функции @code{save}, @code{strungout} и @code{with_stdout} учитывают @code{file_output_append}.
368 Остальные функции, которые записываю выход во внешние файлы, не учитывают @code{file_output_append}.
369 В частности, графические и транслирующие функции всегда замещает содержимое выводимого файла, а
370 @code{tex} и @code{strungout} всегда дописываю в конец.
371 @c WHAT ABOUT WRITEFILE ??
373 @opencatbox{Категории:}
374 @category{Вывод файлов}
375 @category{Глобальные флаги}
376 @closecatbox
378 @end defvr
380 @deffn {Функция} appendfile (@var{filename})
381 Добавляет копию консольного вывода в @var{filename}. 
382 @code{appendfile} работает так же как и @code{writefile},
383 но отличие в том, что если файл существует, он всегда дописывается.
385 @code{closefile} закрывает трансляцию в файл открытый функциями @code{appendfile} или @code{writefile}.
387 @opencatbox{Категории:}
388 @category{Вывод файлов}
389 @category{Работа в консоли}
390 @closecatbox
392 @end deffn
394 @c batch CAN TAKE 'test AS AN OPTIONAL ARGUMENT IN WHICH CASE IT CALLS test-batch
395 @c (SAME AS run_testsuite) -- SHOULD DOCUMENT batch (file, 'test)
396 @c FIX BUG WHICH CAUSES batch (<file>, 'test) TO FAIL, THEN DOCUMENT IT HERE
397 @deffn {Функция} batch (@var{filename})
398 Считывает выражения Maxima из @var{filename}, и обрабатывает их.
399 @code{batch} ищет @var{filename} в директориях списка @code{file_search_maxima}.
400 См. @code{file_search}.
402 @var{filename} содержит последовательность выражений Maxima,
403 завершающихся символами @code{;} или @code{$}.
404 Специальные переменная @code{%} и функция @code{%th}
405 ссылаются на предыдущие результаты внутри файла.
406 Файл может включать конструкции @code{:lisp}.
407 Символы пробела, табуляции и новой строки в файле игнорируются.
408 Подходящий входной файл может быть создан при помощи текстового редактора или 
409 функцией @code{stringout}.
411 @code{batch} считывает каждое входящее выражение из @var{filename},
412 отображает его ввод в консоли,
413 вычисляет соответствующее выходящее выражение
414 и выводит его.
415 Входящим выражениям присваиваются входные метки, а выходящим -- выходные.
416 @code{batch} вычисляет все входящие выражения файла до тех пор пока в них не
417 встретится ошибка.
418 Если запрашивается пользовательский ввод (к примеру, командами @code{asksign} или @code{askinteger}),
419 выполнение @code{batch} останавливается для сбора требуемого ввода и затем продолжается.
421 Возможна остановка @code{batch} нажатием @code{control-C} в консоли.
422 Эффект нажатия @code{control-C} зависит от реализации лежащего в основе Lisp.
424 @code{batch} может использоваться в различных целях.
425 Для хранения рабочих командных строк, дающих возможность проводить демонстрации без ошибок,
426 или может помочь организовать работу над решением сложных задач.
428 @code{batch} вычисляет свой аргумент.
429 @c LACK OF A RETURN VALUE IS A BUG; THE INTENT IS TO RETURN THE FILE PATH, TO JUDGE BY THE SOURCE CODE
430 @code{batch} не возвращает значений.
432 См. также @code{load}, @code{batchload} и @code{demo}.
434 @opencatbox{Категории:}
435 @category{Управление сессией}
436 @category{Ввод файлов}
437 @closecatbox
439 @end deffn
441 @deffn {Функция} batchload (@var{filename})
442 Считывает выражения Maxima из @var{filename} и вычисляет их,
443 не отображая входные и выходные выражения и не присваивая ссылок
444 выходным выражениям.
445 Однако, печатаемый вывод (такой, какой производят команды @code{print} или @code{describe})
446 отображается.
448 Специальная переменная @code{%} и функция @code{%th}
449 ссылается на предыдущие результаты из режима диалога, но не на результаты
450 внутри файла.
451 Файл не может включать конструкции @code{:lisp}.
453 @code{batchload} возвращает путь к @var{filename} в виде строки.
454 @code{batchload} вычисляет свой аргумент.
456 См. также @code{batch} и @code{load}.
458 @opencatbox{Категории:}
459 @category{Управление сессией}
460 @category{Ввод файлов}
461 @closecatbox
463 @end deffn
465 @deffn {Функция} closefile ()
466 Закрывает запись в файл, открытую командой @code{writefile} или @code{appendfile}.
468 @opencatbox{Категории:}
469 @category{Вывод файлов}
470 @category{Работа в консоли}
471 @closecatbox
473 @end deffn
475 @c NEEDS CLARIFICATION !!!
476 @deffn {Функция} collapse (@var{expr})
477 Сворачивает выражение @var{expr} делая все его общие (т.е. равные)
478 ссылающимися на одни ячейки памяти, тем самым сохраняя память.
479 Функция (@code{collapse} используется командой @code{optimize}.
480 Таким образом, вызов @code{collapse} может быть полезным до выгрузки в @code{save} файл. 
481 Можно свернуть несколько выражений вместе используя команду  
482 @code{collapse ([@var{expr_1}, ..., @var{expr_n}])}.  
483 Аналогично, можно свернуть элементы массива @code{A} 
484 при помощи команды @code{collapse (listarray ('A))}.
486 @opencatbox{Категории:}
487 @category{Выражения}
488 @closecatbox
489 @end deffn
491 @deffn {Функция} concat (@var{arg_1}, @var{arg_2}, ...)
492 Сцепляет свои аргументы. Аргументы должны быть атомами.
493 Возвращаемое значение является символом, если первый аргумент -- символ, и строкой
494 в противном случае.
496 @code{concat} вычисляет свои аргументы.
497 Одиночная кавычка @code{'} предотвращает вычисление.
499 @example
500 (%i1) y: 7$
501 (%i2) z: 88$
502 (%i3) concat (y, z/2);
503 (%o3)                          744
504 (%i4) concat ('y, z/2);
505 (%o4)                          y44
506 @end example
508 Символу, полученному с помощью @code{concat}, можно присваивать значения
509 и использовать его в выражениях.
510 @code{::} (двойное двоеточие) -- оператор присваивания, который вычисляет свой левый операнд.
512 @example
513 (%i5) a: concat ('y, z/2);
514 (%o5)                          y44
515 (%i6) a:: 123;
516 (%o6)                          123
517 (%i7) y44;
518 (%o7)                          123
519 (%i8) b^a;
520                                y44
521 (%o8)                         b
522 (%i9) %, numer;
523                                123
524 (%o9)                         b
525 @end example
527 Заметьте, что несмотря на то, что @code{concat (1, 2)} выглядит как число, результат является строкой.
529 @example
530 (%i10) concat (1, 2) + 3;
531 (%o10)                       12 + 3
532 @end example
534 @opencatbox{Категории:}
535 @category{Выражения}
536 @category{Строки}
537 @closecatbox
539 @end deffn
541 @deffn {Функция} sconcat (@var{arg_1}, @var{arg_2}, ...)
543 Сцепляет аргументы в строки. В отличии от @code{concat}, аргументы не обязаны
544 быть атомами.
546 @example
547 (%i1) sconcat ("xx[", 3, "]:", expand ((x+y)^3));
548 (%o1)               xx[3]:y^3+3*x*y^2+3*x^2*y+x^3
549 @end example
551 @opencatbox{Категории:}
552 @category{Выражения}
553 @category{Строки}
554 @closecatbox
556 @end deffn
558 @c AFTER REVIEWING src/displa.lisp, IT LOOKS LIKE THIS VARIABLE HAS NO EFFECT
559 @c CUT IT ON THE NEXT PASS
560 @c @defvar cursordisp
561 @c Default value: @code{true}
562 @c 
563 @c When @code{cursordisp} is @code{true}, expressions are drawn by
564 @c the displayer in logical sequence.  This only works with a console
565 @c which can do cursor movement.  If @code{false}, expressions are
566 @c printed line by line.
567 @c 
568 @c @code{cursordisp} is always @code{false} when a @code{writefile} is in
569 @c effect.
570 @c 
571 @c @end defvar
573 @deffn {Функция} disp (@var{expr_1}, @var{expr_2}, ...)
574 то же что и @code{display}, но отличается тем что значение аргументов отображаются 
575 без выражений. Это полезно для сложных аргументов, у которых нет имени или
576 в случае, когда интерес представляет только значение без имени. 
578 @opencatbox{Категории:}
579 @category{Функции вывода}
580 @closecatbox
582 @end deffn
584 @deffn {Функция} dispcon (@var{tensor_1}, @var{tensor_2}, ...)
585 @deffnx {Функция} dispcon (all)
586 Отображает ограничения аргументов, наложенные на них командой @code{defcon}.
587 @code{dispcon (all)} отображает все ограничения, которые были заданы.
589 @opencatbox{Категории:}
590 @category{Функции вывода}
591 @closecatbox
593 @end deffn
595 @deffn {Функция} display (@var{expr_1}, @var{expr_2}, ...)
596 Отображает равенства, выравненные по центру. Левыми частями равенств являются не вычисленные
597 выражения @var{expr_i}, a правыми -- их значения.
598 Эта функция полезна в блоках и конструкциях @code{for} для вывода промежуточных результатов.
599 Аргументы @code{display} обычно являются атомами, переменными с индексом, или
600 вызовами функций. См. также @code{disp}.
602 @example
603 (%i1) display(B[1,2]);
604                                       2
605                          B     = X - X
606                           1, 2
607 (%o1)                            done
608 @end example
610 @opencatbox{Категории:}
611 @category{Функции вывода}
612 @closecatbox
614 @end deffn
616 @defvr {Управляющая переменная} display2d
617 Значение по умолчанию: @code{true}
619 Когда @code{display2d} равна @code{false}, консольный вывод производится в строковой (одномерной) форме,
620 а не в наглядной (двумерной).
622 @opencatbox{Категории:}
623 @category{Флаги и переменные вывода}
624 @closecatbox
626 @end defvr
628 @defvr {Управляющая переменная} display_format_internal
629 Значение по умолчанию: @code{false}
631 Когда @code{display_format_internal} равна  @code{true},
632 выражения отображаются без преобразования, которое "прячет" 
633 внутреннее математическое представление.
634 Тогда вывод соответствует результату функции @code{inpart}, а не @code{part}.
636 Примеры:
638 @example
639 User     part       inpart
640 a-b;      a - b     a + (- 1) b
642            a            - 1
643 a/b;       -         a b
644            b
645                        1/2
646 sqrt(x);   sqrt(x)    x
648           4 X        4
649 X*4/3;    ---        - X
650            3         3
651 @end example
653 @opencatbox{Категории:}
654 @category{Флаги и переменные вывода}
655 @closecatbox
657 @end defvr
659 @c IS THIS FUNCTION STILL USEFUL ???
660 @c REPHRASE, NEEDS EXAMPLES
661 @deffn {Функция} dispterms (@var{expr})
662 Выводит друг под другом части @var{expr}.
663 Первым отображается оператор выражения @var{expr}, затем каждое слагаемое суммы, множители
664 произведения или части более общего выражения отображаются отдельно. Это полезно,
665 когда @var{expr} слишком большое для иных способов отображения. К примеру, если 
666 @code{P1}, @code{P2}, ... -- очень большие выражения, то программе может не хватить
667 памяти при попытке отобразить @code{P1 + P2 + ...} как единое целое.
668 Однако, @code{dispterms (P1 + P2 + ...)} отображает @code{P1}, затем ниже @code{P2} и т. д.
669 Если не использовать @code{dispterms}, когда показательное выражение 
670 слишком широко, для отображения в виде @code{A^B}, то оно выводится в виде @code{expt (A, B)}
671 (или @code{ncexpt (A, B)} в случае @code{A^^B}).
672 @c !!! кстати, у меня оно не в таком виде появляется, а в @code{expt(A,<B>)}
674 @opencatbox{Категории:}
675 @category{Функции вывода}
676 @closecatbox
678 @end deffn
680 @defvr {Управляющая переменная} error_size
681 Значение по умолчанию: 10
683 @code{error_size} изменяет сообщения об ошибках, в зависимости от размера выражения, которое появляется в нем.
684 Если размер выражения (определенный с помощью Lisp-функции @code{ERROR-SIZE})
685 больше чем @code{error_size}, выражение замещается символом, а символу присваивается
686 выражение. Символы берутся из списка @code{error_syms}.
688 В противном случае, когда выражение меньше чем @code{error_size}, оно и выводится
689 в сообщении.
691 См. также @code{error} и @code{error_syms}.
693 Пример:
694 @c OUTPUT GENERATED BY THE FOLLOWING
695 @c U: (C^D^E + B + A)/(cos(X-1) + 1)$
696 @c error_size: 20$
697 @c error ("Example expression is", U);
698 @c errexp1;
699 @c error_size: 30$
700 @c error ("Example expression is", U);
702 @code{ERROR-SIZE} задает размер @code{U} равным 24.
704 @example
705 (%i1) U: (C^D^E + B + A)/(cos(X-1) + 1)$
707 (%i2) error_size: 20$
709 (%i3) error ("Example expression is", U);
711 Example expression is errexp1
712  -- an error.  Quitting.  To debug this try debugmode(true);
713 (%i4) errexp1;
714                             E
715                            D
716                           C   + B + A
717 (%o4)                    --------------
718                          cos(X - 1) + 1
719 (%i5) error_size: 30$
721 (%i6) error ("Example expression is", U);
723                          E
724                         D
725                        C   + B + A
726 Example expression is --------------
727                       cos(X - 1) + 1
728  -- an error.  Quitting.  To debug this try debugmode(true);
729 @end example
731 @opencatbox{Категории:}
732 @category{Флаги и переменные вывода}
733 @category{Отладка}
734 @closecatbox
736 @end defvr
738 @defvr {Управляющая переменная} error_syms
739 Значение по умолчанию: @code{[errexp1, errexp2, errexp3]}
741 В сообщениях об ошибках, выражения большие чем @code{error_size} заменяются символами
742 и присваиваются этим символам. Символы берутся из списка @code{error_syms}.
743 Первое слишком большое выражения заменяется символом @code{error_syms[1]},
744 второе символом @code{error_syms[2]} и так далее.
746 Если слишком больших выражений больше чем элементов в @code{error_syms},
747 то символы генерируются автоматически, @code{n}-ный символ равен @code{concat ('errexp, @var{n})}.
749 См. также @code{error} и @code{error_size}.
751 @opencatbox{Категории:}
752 @category{Флаги и переменные вывода}
753 @category{Отладка}
754 @closecatbox
756 @end defvr
758 @deffn {Функция} expt (@var{a}, @var{b})
759 Если показательное выражение слишком широко для отображения в виде @code{@var{a}^@var{b}}),
760 оно выводится в виде @code{expt (@var{a}, @var{b})} (или @code{ncexpt (@var{a}, @var{b})}
761 в случае @code{@var{a}^^@var{b}}).
763 @code{expt} и @code{ncexpt} не распознаются при вводе.
765 @end deffn
767 @defvr {Управляющая переменная} exptdispflag
768 Значение по умолчанию: @code{true}
770 Когда @code{exptdispflag} равна @code{true}, Maxima отображает выражения
771 с отрицательными степенями в виде дробей, например @code{X^(-1)} в виде @code{1/X}.
773 @opencatbox{Категории:}
774 @category{Флаги и переменные вывода}
775 @category{Выражения}
776 @closecatbox
778 @end defvr
780 @deffn {Функция} filename_merge (@var{path}, @var{filename})
781 Составляет путь из @var{path} и @var{filename}. Если последняя часть пути @var{path}
782 имеет форму @code{###.@var{something}}, эта часть заменяется на @code{@var{filename}.@var{something}}.
783 В противном случае последняя часть заменяется на @var{filename}.
785 Результатом является объект пути Lisp.
787 @opencatbox{Категории:}
788 @category{Ввод файлов}
789 @category{Вывод файлов}
790 @closecatbox
792 @end deffn
794 @deffn {Функция} file_search (@var{filename})
795 @deffnx {Функция} file_search (@var{filename}, @var{pathlist})
797 @code{file_search} ищет файл @var{filename} и возвращает путь к этому файлу (в виде строки),
798 если может его найти, иначе возвращает @code{false}.
799 @code{file_search (@var{filename})} ищет в определенных по умолчанию каталогах для поиска, которые
800 указаны в переменных @code{file_search_maxima}, @code{file_search_lisp} и @code{file_search_demo}.
802 Перед попыткой сопоставить имя с шаблонами поиска файлов.
803 @code{file_search} первым делом проверяет существование искомого файла.
804 См. @code{file_search_maxima} о шаблонах поиска файла.
806 Аргумент @var{filename} может быть как путем с именем, так и просто именем файла.
807 Если каталог включен в пути поиска вместе с поисковым шаблоном файла,
808 то @var{filename} может быть именем без расширения.
809 В примере
811 @example
812 file_search ("/home/wfs/special/zeta.mac");
813 file_search ("zeta.mac");
814 file_search ("zeta");
815 @end example
817 будет найден один и тот же файл, если он существует и @code{/home/wfs/special/###.mac} включен
818 в @code{file_search_maxima}.
820 @code{file_search (@var{filename}, @var{pathlist})} осуществляет поиск в каталогах,
821 заданных переменной @var{pathlist}, которая представляет из себя список строк.
822 Аргумент @var{pathlist} замещает каталоги поиска, определенные по умолчанию, так если дан список путей,
823 @code{file_search} ищет только в заданных там и не ищет в путях по умолчанию.
824 Даже если @var{pathlist} содержит только один каталог, @var{pathlist} должен быть задан, как список из одного 
825 элемента.
827 Пользователь может изменять пути, определенные по умолчанию. См. @code{file_search_maxima}.
829 @code{file_search} используется функцией @code{load}, шаблоны поиска файлов берутся
830 из @code{file_search_maxima} и @code{file_search_lisp}.
832 @opencatbox{Категории:}
833 @category{Ввод файлов}
834 @closecatbox
836 @end deffn
838 @defvr {Управляющая переменная} file_search_maxima
839 @defvrx {Управляющая переменная} file_search_lisp
840 @defvrx {Управляющая переменная} file_search_demo
841 Эти переменные задают списки каталогов, в которых производят поиск функции
842 @code{load}, @code{demo} и некоторые другие функции Maxima.
843 По умолчанию в них заданы различные каталоги из путей установки Maxima.
845 Пользователь может изменить эти переменные, удалить значения по умолчанию или 
846 добавить дополнительные каталоги. 
847 Например,
849 @example
850 file_search_maxima: ["/usr/local/foo/###.mac",
851     "/usr/local/bar/###.mac"]$
852 @end example
854 удаляет начальные директории списка @code{file_search_maxima},
855 в то время как
857 @example
858 file_search_maxima: append (file_search_maxima,
859     ["/usr/local/foo/###.mac", "/usr/local/bar/###.mac"])$
860 @end example
862 добавляет две дополнительные директории.
863 Иногда удобно разместить такие выражения в файле @code{maxima-init.mac},
864 чтобы путь поиска файла назначался автоматически при запуске Maxima.
866 При помощи шаблонов поиска файлов можно определить несколько расширений файлов и несколько путей. 
867 Строка @code{###} заменяется запрашиваемым именем,
868 в то время как список разделенных запятыми имен, заключенный в фигурные скобки, @code{@{foo,bar,baz@}}
869 раскрывается в множество строк.
870 В качестве примера предположим, что искомое имя -- @code{neumann}, тогда
872 @example
873 "/home/@{wfs,gcj@}/###.@{lisp,mac@}"
874 @end example
876 раскроется в @code{/home/wfs/neumann.lisp}, @code{/home/gcj/neumann.lisp}, @code{/home/wfs/neumann.mac} и
877 @code{/home/gcj/neumann.mac}.
879 @opencatbox{Категории:}
880 @category{Ввод файлов}
881 @category{Глобальные переменные}
882 @closecatbox
884 @end defvr
886 @deffn {Функция} file_type (@var{filename})
887 Возвращает предположение о содержимом @var{filename}, на основе 
888 его расширения. @var{filename} не должен ссылаться на существующий файл,
889 не происходит попыток открыть файл и проверить содержимое.
891 Возвращаемое значение является одним из символов: @code{object}, @code{lisp} или @code{maxima}.
892 Если расширение начинается на @code{m} или @code{d}, @code{file_type} возвращается @code{maxima}.
893 Если расширение начинается на @code{l}, @code{file_type} возвращается @code{lisp}.
894 Если ни один из перечисленных вариантов, то @code{file_type} возвращается @code{object}.
896 @opencatbox{Категории:}
897 @category{Ввод файлов}
898 @closecatbox
900 @end deffn
902 @deffn {Функция} grind (@var{expr})
903 @deffnx {Управляющая переменная} grind
904 Функция @code{grind} выводит @var{expr} в консоль в форме
905 подходящем для ввода в Maxima. @code{grind} всегда возвращает @code{done}.
907 Когда @var{expr} является именем функции или макрокоманды, @code{grind} печатает
908 определение функции или макрокоманды вместо просто имени.
910 См. также @code{string}, которая возвращает строку, а не печатает вывод. 
911 @code{grind} пытается печатать выражение способом, который делает его проще
912 для чтения, чем вывод команды @code{string}.
914 Когда переменная @code{grind} равна @code{true}, вывод @code{string} и @code{stringout}
915 имеет тот же вид, что и вывод @code{grind}.
916 В противном случае специального форматирования вывода этих функций не производится.
917 По умолчанию значение переменной @code{grind} равно @code{false}.
919 @code{grind} может так же быть задана как аргумент @code{playback}.
920 Когда @code{grind} задана, @code{playback} печатает входное выражение в таком же 
921 виде как функция @code{grind}. 
922 В противном случае специального форматирования вывода не производится.
924 @code{grind} вычисляет свой аргумент.
926 Примеры:
928 @c ===beg===
929 @c aa + 1729;
930 @c grind (%);
931 @c [aa, 1729, aa + 1729];
932 @c grind (%);
933 @c matrix ([aa, 17], [29, bb]);
934 @c grind (%);
935 @c set (aa, 17, 29, bb);
936 @c grind (%);
937 @c exp (aa / (bb + 17)^29);
938 @c grind (%);
939 @c expr: expand ((aa + bb)^10);
940 @c grind (expr);
941 @c string (expr);
942 @c cholesky (A):= block ([n : length (A), L : copymatrix (A),
943 @c   p : makelist (0, i, 1, length (A))], 
944 @c   for i thru n do for j : i thru n do
945 @c   (x : L[i, j], x : x - sum (L[j, k] * L[i, k], k, 1, i - 1), 
946 @c   if i = j then @c   p[i] : 1 / sqrt(x) else L[j, i] : x * p[i]), 
947 @c   for i thru n do L[i, i] : 1 / p[i],
948 @c   for i thru n do for j : i + 1 thru n do L[i, j] : 0, L)$
949 @c grind (cholesky);
950 @c string (fundef (cholesky));
951 @c ===end===
952 @example
953 (%i1) aa + 1729;
954 (%o1)                       aa + 1729
955 (%i2) grind (%);
956 aa+1729$
957 (%o2)                         done
958 (%i3) [aa, 1729, aa + 1729];
959 (%o3)                 [aa, 1729, aa + 1729]
960 (%i4) grind (%);
961 [aa,1729,aa+1729]$
962 (%o4)                         done
963 (%i5) matrix ([aa, 17], [29, bb]);
964                            [ aa  17 ]
965 (%o5)                      [        ]
966                            [ 29  bb ]
967 (%i6) grind (%);
968 matrix([aa,17],[29,bb])$
969 (%o6)                         done
970 (%i7) set (aa, 17, 29, bb);
971 (%o7)                   @{17, 29, aa, bb@}
972 (%i8) grind (%);
973 @{17,29,aa,bb@}$
974 (%o8)                         done
975 (%i9) exp (aa / (bb + 17)^29);
976                                 aa
977                             -----------
978                                      29
979                             (bb + 17)
980 (%o9)                     %e
981 (%i10) grind (%);
982 %e^(aa/(bb+17)^29)$
983 (%o10)                        done
984 (%i11) expr: expand ((aa + bb)^10);
985          10           9        2   8         3   7         4   6
986 (%o11) bb   + 10 aa bb  + 45 aa  bb  + 120 aa  bb  + 210 aa  bb
987          5   5         6   4         7   3        8   2
988  + 252 aa  bb  + 210 aa  bb  + 120 aa  bb  + 45 aa  bb
989         9        10
990  + 10 aa  bb + aa
991 (%i12) grind (expr);
992 bb^10+10*aa*bb^9+45*aa^2*bb^8+120*aa^3*bb^7+210*aa^4*bb^6
993      +252*aa^5*bb^5+210*aa^6*bb^4+120*aa^7*bb^3+45*aa^8*bb^2
994      +10*aa^9*bb+aa^10$
995 (%o12)                        done
996 (%i13) string (expr);
997 (%o13) bb^10+10*aa*bb^9+45*aa^2*bb^8+120*aa^3*bb^7+210*aa^4*bb^6\
998 +252*aa^5*bb^5+210*aa^6*bb^4+120*aa^7*bb^3+45*aa^8*bb^2+10*aa^9*\
999 bb+aa^10
1000 (%i14) cholesky (A):= block ([n : length (A), L : copymatrix (A),
1001   p : makelist (0, i, 1, length (A))], for i thru n do
1002   for j : i thru n do
1003   (x : L[i, j], x : x - sum (L[j, k] * L[i, k], k, 1, i - 1),
1004   if i = j then p[i] : 1 / sqrt(x) else L[j, i] : x * p[i]),
1005   for i thru n do L[i, i] : 1 / p[i],
1006   for i thru n do for j : i + 1 thru n do L[i, j] : 0, L)$
1007 (%i15) grind (cholesky);
1008 cholesky(A):=block(
1009          [n:length(A),L:copymatrix(A),
1010           p:makelist(0,i,1,length(A))],
1011          for i thru n do
1012              (for j from i thru n do
1013                   (x:L[i,j],x:x-sum(L[j,k]*L[i,k],k,1,i-1),
1014                    if i = j then p[i]:1/sqrt(x)
1015                        else L[j,i]:x*p[i])),
1016          for i thru n do L[i,i]:1/p[i],
1017          for i thru n do (for j from i+1 thru n do L[i,j]:0),L)$
1018 (%o15)                        done
1019 (%i16) string (fundef (cholesky));
1020 (%o16) cholesky(A):=block([n:length(A),L:copymatrix(A),p:makelis\
1021 t(0,i,1,length(A))],for i thru n do (for j from i thru n do (x:L\
1022 [i,j],x:x-sum(L[j,k]*L[i,k],k,1,i-1),if i = j then p[i]:1/sqrt(x\
1023 ) else L[j,i]:x*p[i])),for i thru n do L[i,i]:1/p[i],for i thru \
1024 n do (for j from i+1 thru n do L[i,j]:0),L)
1025 @end example
1027 @opencatbox{Категории:}
1028 @category{Флаги и переменные вывода}
1029 @category{Функции вывода}
1030 @closecatbox
1032 @end deffn
1034 @c !!! Это работает?
1035 @defvr {Управляющая переменная} ibase
1036 Значение по умолчанию: 10
1038 Целые вводимые в Maxima распознаются с учетом основания системы счисления @code{ibase}.
1040 Переменной @code{ibase} может быть присвоено значение между 2 и 35 (в десятичной), включительно.
1041 Когда @code{ibase} больше чем 10, в состав цифр входят десятичные цифры от 0 до 9
1042 и заглавные буквы алфавита A, B, C, ..., по мере необходимости.
1044 Цифры для основания 35, наибольшего возможного, включают цифры от 0 до 9 и буквы от A до Z.
1047 См. также @code{obase}.
1049 @c NEED EXAMPLES HERE
1050 @opencatbox{Категории:}
1051 @category{Работа в консоли}
1052 @closecatbox
1054 @end defvr
1056 @defvr {Управляющая переменная} inchar
1057 Значение по умолчанию: @code{%i}
1059 @code{inchar} -- префикс перед метками выражений, вводимых пользователем.
1060 Maxima автоматически генерирует ссылку для каждого входного выражения,
1061 соединяя @code{inchar} и @code{linenum}.
1062 Переменной @code{inchar} может быть присвоена любая строка или обозначение, не обязательно 
1063 состоящее из одной буквы.
1065 @example
1066 (%i1) inchar: "input";
1067 (%o1)                                input
1068 (input1) expand ((a+b)^3);
1069                             3        2      2      3
1070 (%o1)                      b  + 3 a b  + 3 a  b + a
1071 (input2)
1072 @end example
1074 См. также @code{labels}.
1076 @opencatbox{Категории:}
1077 @category{Флаги и переменные вывода}
1078 @closecatbox
1080 @end defvr
1082 @deffn {Функция} ldisp (@var{expr_1}, ..., @var{expr_n})
1083 Отображает выражения @var{expr_1}, ..., @var{expr_n} в консоли как в печатном выводе.
1084 @code{ldisp} присваивает метки промежуточных выражений для каждого аргумента
1085 и возвращает список меток.
1087 См. также @code{disp}.
1089 @example
1090 (%i1) e: (a+b)^3;
1091                                    3
1092 (%o1)                       (b + a)
1093 (%i2) f: expand (e);
1094                      3        2      2      3
1095 (%o2)               b  + 3 a b  + 3 a  b + a
1096 (%i3) ldisp (e, f);
1097                                    3
1098 (%t3)                       (b + a)
1100                      3        2      2      3
1101 (%t4)               b  + 3 a b  + 3 a  b + a
1103 (%o4)                      [%t3, %t4]
1104 (%i4) %t3;
1105                                    3
1106 (%o4)                       (b + a)
1107 (%i5) %t4;
1108                      3        2      2      3
1109 (%o5)               b  + 3 a b  + 3 a  b + a
1110 @end example
1112 @opencatbox{Категории:}
1113 @category{Функции вывода}
1114 @closecatbox
1116 @end deffn
1118 @deffn {Функция} ldisplay (@var{expr_1}, ..., @var{expr_n})
1119 Отображает выражения @var{expr_1}, ..., @var{expr_n} в консоли как при выводе.
1120 Каждое выражение печатается в виде равенства @code{lhs = rhs},
1121 в котором @code{lhs} -- один из аргументов функции @code{ldisplay},
1122 а @code{rhs} -- его значение.
1123 Обычно каждый аргумент -- переменная.
1124 @code{ldisp} присваивает метки промежуточных выражений каждому равенству
1125 и возвращает список меток.
1127 См. также @code{display}.
1129 @example
1130 (%i1) e: (a+b)^3;
1131                                    3
1132 (%o1)                       (b + a)
1133 (%i2) f: expand (e);
1134                      3        2      2      3
1135 (%o2)               b  + 3 a b  + 3 a  b + a
1136 (%i3) ldisplay (e, f);
1137                                      3
1138 (%t3)                     e = (b + a)
1140                        3        2      2      3
1141 (%t4)             f = b  + 3 a b  + 3 a  b + a
1143 (%o4)                      [%t3, %t4]
1144 (%i4) %t3;
1145                                      3
1146 (%o4)                     e = (b + a)
1147 (%i5) %t4;
1148                        3        2      2      3
1149 (%o5)             f = b  + 3 a b  + 3 a  b + a
1150 @end example
1152 @opencatbox{Категории:}
1153 @category{Функции вывода}
1154 @closecatbox
1156 @end deffn
1158 @defvr {Управляющая переменная} linechar
1159 Значение по умолчанию: @code{%t}
1161 @code{linechar} -- префикс меток промежуточных выражений, генерируемых Maxima.
1162 Maxima генерирует метки для каждого промежуточного выражения (если оно отображается),
1163 соединяя @code{linechar} и @code{linenum}.
1164 Переменной @code{linechar} может быть присвоена любая строка или символ, не обязательно
1165 одиночная буква.
1167 Промежуточный выражения могут отображаться, а могут и не отображаться.
1168 См. @code{programmode} и @code{labels}.
1170 @opencatbox{Категории:}
1171 @category{Флаги и переменные вывода}
1172 @closecatbox
1174 @end defvr
1176 @defvr {Управляющая переменная} linel
1177 Значение по умолчанию: 79
1179 @code{linel} -- ширина консоли (в символах) для вывода выражений.
1180 @c лучше не придумал, или недопонял.
1181 Пользователь может задать любое значение @code{linel}, хотя очень маленькие или
1182 очень большие значения могут оказаться неудобными.
1183 Текст выводимый встроенными функциями Maxima, такой как сообщения об ошибках и вывод @code{describe},
1184 не зависит от @code{linel}.
1186 @opencatbox{Категории:}
1187 @category{Флаги и переменные вывода}
1188 @closecatbox
1190 @end defvr
1192 @defvr {Управляющая переменная} lispdisp
1193 Значение по умолчанию: @code{false}
1195 Когда @code{lispdisp} равна @code{true},
1196 Lisp символы отображаются с вопросительным знаком @code{?} перед ними.
1197 В противном случае Lisp символы отображаются без знака.
1199 Примеры:
1201 @c ===beg===
1202 @c lispdisp: false$
1203 @c ?foo + ?bar;
1204 @c lispdisp: true$
1205 @c ?foo + ?bar;
1206 @c ===end===
1207 @example
1208 (%i1) lispdisp: false$
1209 (%i2) ?foo + ?bar;
1210 (%o2)                       foo + bar
1211 (%i3) lispdisp: true$
1212 (%i4) ?foo + ?bar;
1213 (%o4)                      ?foo + ?bar
1214 @end example
1216 @opencatbox{Категории:}
1217 @category{Флаги и переменные вывода}
1218 @closecatbox
1220 @end defvr
1222 @deffn {Функция} load (@var{filename})
1223 Вычисляет выражения в @var{filename},
1224 тем самым загружая переменные, функции и другие объекты в Maxima.
1225 Значения любых существовавших объектов заменяются связями, полученными из @var{filename}.
1226 Для поиска файла @code{load} вызывает @code{file_search},
1227 пути поиска берутся из @code{file_search_maxima} и @code{file_search_lisp}.
1228 Если @code{load} выполнена успешно, то возвращается имя файла, иначе печатается сообщение об ошибке.
1230 @code{load} работает с равным успехом как для Lisp, так и для Maxima программ.
1231 Файлы, созданные командами @code{save}, @code{translate_file} и @code{compile_file}, которые создают
1232 код Lisp, и @code{stringout}, которая создает код Maxima, могут быть обработаны функцией @code{load}.
1233 @code{load} вызывает @code{loadfile} для загрузки Lisp файлов и @code{batchload} для загрузки Maxima файлов.
1235 @code{load} не распознает конструкции @code{:lisp} в файлах Maxima, и во время обработки @var{filename},
1236 глобальные переменные @code{_}, @code{__}, @code{%} и @code{%th} имеют те связи, которые были у них в момент 
1237 вызова @code{load}.
1239 См. также @code{loadfile}, @code{batch}, @code{batchload} и @code{demo}.
1240 @code{batch}, @code{batchload} и @code{demo} выполняют Maxima файлы.
1242 См. @code{file_search} для более подробного ознакомления с механизмом поиска файлов.
1244 @code{load} вычисляет свой аргумент.
1246 @opencatbox{Категории:}
1247 @category{Управление сессией}
1248 @category{Ввод файлов}
1249 @closecatbox
1251 @end deffn
1253 @deffn {Функция} loadfile (@var{filename})
1254 Вычисляет выражения Lisp в @var{filename}.
1255 @code{loadfile} не вызывает @code{file_search}, поэтому @code{filename} должен включать
1256 расширение и информацию о пути, достаточную для поиска файла.
1258 @code{loadfile} может обрабатывать файлы, созданные командами @code{save}, @code{translate_file} и @code{compile_file}.
1259 Возможно, удобнее использовать @code{load} вместо @code{loadfile}.
1261 @opencatbox{Категории:}
1262 @category{Управление сессией}
1263 @category{Ввод файлов}
1264 @closecatbox
1266 @end deffn
1268 @defvr {Управляющая переменная} loadprint
1269 Значение по умолчанию: @code{true}
1271 @code{loadprint} управляет печатью сообщение после загрузки файла.
1273 @itemize @bullet
1274 @item
1275 Если @code{loadprint} равна @code{true}, сообщение всегда выводится.
1276 @item
1277 Если @code{loadprint} равна @code{'loadfile}, сообщение выводится только в случае,
1278 когда файл загружается функцией @code{loadfile}.
1279 @item
1280 Когда @code{loadprint} равна @code{'autoload},
1281 сообщение выводится только если файл загружается автоматически.
1282 См. @code{setup_autoload}.
1283 @item
1284 Когда @code{loadprint} равен @code{false}, сообщение не выводится.
1285 @end itemize
1287 @opencatbox{Категории:}
1288 @category{Ввод файлов}
1289 @category{Глобальные флаги}
1290 @closecatbox
1292 @end defvr
1294 @defvr {Управляющая переменная} obase
1295 Значение по умолчанию: 10
1297 @code{obase} -- основание системы счисления в которой Maxima отображает целые числа.
1299 Переменной @code{obase} можно присвоить любое целое число между 2 и 35 (десятичное),
1300 включительно.
1301 Когда @code{obase} больше десяти, цифрами являются десятичные цифры от 0 до 9 и 
1302 заглавные буквы латинского алфавита A, B, C, ..., по мере необходимости.
1303 Цифры системы с основанием 35, самым большим из допустимых,
1304 включают цифры от 0 до 9 и буквы от A до Y.
1306 См. также @code{ibase}.
1308 @c NEED EXAMPLES HERE
1309 @opencatbox{Категории:}
1310 @category{Флаги и переменные вывода}
1311 @category{Работа в консоли}
1312 @closecatbox
1314 @end defvr
1316 @defvr {Управляющая переменная} outchar
1317 Значение по умолчанию: @code{%o}
1319 @code{outchar} -- это префикс меток для выражений, вычисленных системой Maxima.
1320 Maxima автоматически генерирует метки для каждого вычисленного выражения, соединяя
1321 @code{outchar} с @code{linenum}.
1322 Переменной @code{outchar} можно присвоить любую строку или символ, не обязательно 
1323 одиночную букву.
1325 @example
1326 (%i1) outchar: "output";
1327 (output1)                           output
1328 (%i2) expand ((a+b)^3);
1329                             3        2      2      3
1330 (output2)                  b  + 3 a b  + 3 a  b + a
1331 (%i3)
1332 @end example
1334 См. также @code{labels}.
1336 @opencatbox{Категории:}
1337 @category{Флаги и переменные вывода}
1338 @closecatbox
1340 @end defvr
1342 @c STILL EXISTS, NEEDS CLARIFICATION !!!
1343 @defvr {Управляющая переменная} packagefile
1344 Значение по умолчанию: @code{false}
1346 Разработчики, которые используют @code{save} или @code{translate}, создавая пакеты (файлы)
1347 для использования другими, возможно захотят установить @code{packagefile: true},
1348 чтобы при загрузке файла предотвратить 
1349 занесение информации, кроме необходимой, в списки Maxima (такие как @code{values},
1350 @code{functions}).
1351 В этом случае содержимое пакета будет загружено не в виде пользовательских данных.
1352 Заметим, что это не решает проблему возможного конфликта имен.
1353 Также заметим, что переменная просто указывает на то, что выводится в пакетный файл.
1354 Установка управляющей переменной в @code{true} также полезна для создания 
1355 инициализационных файлов Maxima.
1357 @opencatbox{Категории:}
1358 @category{Флаги и переменные трансляции}
1359 @closecatbox
1361 @end defvr
1363 @defvr {Управляющая переменная} pfeformat
1364 Значение по умолчанию: @code{false}
1366 Когда   @code{pfeformat} равна @code{true}, рациональная дробь отображается при помощи 
1367 косой черты (прямого слэша). Целочисленный знаменатель @code{n} отображается 
1368 как множитель @code{1/n}.
1370 @example
1371 (%i1) pfeformat: false$
1372 (%i2) 2^16/7^3;
1373                               65536
1374 (%o2)                         -----
1375                                343
1376 (%i3) (a+b)/8;
1377                               b + a
1378 (%o3)                         -----
1379                                 8
1380 (%i4) pfeformat: true$ 
1381 (%i5) 2^16/7^3;
1382 (%o5)                       65536/343
1383 (%i6) (a+b)/8;
1384 (%o6)                      1/8 (b + a)
1385 @end example
1387 @opencatbox{Категории:}
1388 @category{Флаги и переменные вывода}
1389 @closecatbox
1391 @end defvr
1393 @deffn {Функция} print (@var{expr_1}, ..., @var{expr_n})
1394 Вычисляет и отображает @var{expr_1}, ..., @var{expr_n} одно за другим,
1395 слева направо, начиная с левого края экрана консоли.
1397 Функция @code{print} возвращает значение своего последнего аргумента.
1398 @code{print} не создает меток промежуточных выражений.
1400 См. также @code{display}, @code{disp}, @code{ldisplay} и @code{ldisp}.
1401 Эти функции отображают по одному выражению на строку, в то время как @code{print} старается 
1402 отобразить по два или больше выражений в каждой строке.
1404 Чтобы отобразить содержимое файла, см. @code{printfile}.
1406 @example
1407 (%i1) r: print ("(a+b)^3 is", expand ((a+b)^3), "log (a^10/b) is",
1408       radcan (log (a^10/b)))$
1409             3        2      2      3
1410 (a+b)^3 is b  + 3 a b  + 3 a  b + a  log (a^10/b) is 
1412                                               10 log(a) - log(b) 
1413 (%i2) r;
1414 (%o2)                  10 log(a) - log(b)
1415 (%i3) disp ("(a+b)^3 is", expand ((a+b)^3), "log (a^10/b) is",
1416       radcan (log (a^10/b)))$
1417                            (a+b)^3 is
1419                      3        2      2      3
1420                     b  + 3 a b  + 3 a  b + a
1422                          log (a^10/b) is
1424                        10 log(a) - log(b)
1425 @end example
1427 @opencatbox{Категории:}
1428 @category{Функции вывода}
1429 @closecatbox
1431 @end deffn
1433 @deffn {Функция} printfile (@var{path})
1435 Выводит файл с именем @var{path} на консоль.
1436 Значение @var{path} может быть строкой или символом.
1437 Если символ, то он преобразуется в строку.
1439 Если файл с именем @var{path} доступен в текущей директории, то 
1440 он печатается на консоли.
1441 В противном случае @code{printfile} пытается найти файл добавляя @var{path}
1442 ко всем элементам @code{file_search_usage}
1443 при помощи @code{filename_merge}.
1445 @code{printfile} возвращает @var{path}, если файл существует,
1446 и результат успешного поиска файла.
1448 @opencatbox{Категории:}
1449 @category{Ввод файлов}
1450 @category{Работа в консоли}
1451 @closecatbox
1452 @end deffn
1454 @deffn {Функция} tcl_output (@var{list}, @var{i0}, @var{skip})
1455 @deffnx {Функция} tcl_output (@var{list}, @var{i0})
1456 @deffnx {Функция} tcl_output ([@var{list_1}, ..., @var{list_n}], @var{i})
1458 Выводит элементы списков заключенными в фигурные скобки @code{@{ @}},
1459 в виде пригодном для использования в языке Tcl/Tk.
1462 @code{tcl_output (@var{list}, @var{i0}, @var{skip})}
1463 выводит элементы списка @var{list} с номерами @var{i0}, @code{@var{i0} + @var{skip}},
1464 @code{@var{i0} + 2 @var{skip}} и так далее.
1466 @code{tcl_output (@var{list}, @var{i0})} равнозначна @code{tcl_output (@var{list}, @var{i0}, 2)}.
1468 @code{tcl_output ([@var{list_1}, ..., @var{list_n}], @var{i})}
1469 выводит @var{i}-ые элементы списков @var{list_1}, ..., @var{list_n}.
1471 Примеры:
1472 @c EXAMPLE INPUT
1473 @c tcl_output ([1, 2, 3, 4, 5, 6], 1, 3)$
1474 @c tcl_output ([1, 2, 3, 4, 5, 6], 2, 3)$
1475 @c tcl_output ([3/7, 5/9, 11/13, 13/17], 1)$
1476 @c tcl_output ([x1, y1, x2, y2, x3, y3], 2)$
1477 @c tcl_output ([[1, 2, 3], [11, 22, 33]], 1)$
1479 @c EXAMPLE OUTPUT: CLISP
1480 @c OUTPUT IS OK FOR FIRST TWO, BROKEN FOR OTHERS
1481 @c GCL OUTPUT: SAME FOR FIRST TWO
1482 @c GCL FAILS ON OTHERS (IN EACH CASE COMPLAINING ELEMENTS ARE "not of type (OR RATIONAL LISP:FLOAT)"
1483 @example
1484 (%i1) tcl_output ([1, 2, 3, 4, 5, 6], 1, 3)$
1486  @{1.000000000     4.000000000     
1487  @}
1488 (%i2) tcl_output ([1, 2, 3, 4, 5, 6], 2, 3)$
1490  @{2.000000000     5.000000000     
1491  @}
1492 (%i3) tcl_output ([3/7, 5/9, 11/13, 13/17], 1)$
1494  @{((RAT SIMP) 3 7) ((RAT SIMP) 11 13) 
1495  @}
1496 (%i4) tcl_output ([x1, y1, x2, y2, x3, y3], 2)$
1498  @{$Y1 $Y2 $Y3 
1499  @}
1500 (%i5) tcl_output ([[1, 2, 3], [11, 22, 33]], 1)$
1502  @{SIMP 1.000000000     11.00000000     
1503  @}
1504 @end example
1506 @end deffn
1508 @deffn {Функция} read (@var{expr_1}, ..., @var{expr_n})
1509 Выводит @var{expr_1}, ..., @var{expr_n}, затем считывает одно выражение с консоли и 
1510 возвращает вычисленное выражение.
1512 См. также @code{readonly}.
1514 @example
1515 (%i1) foo: 42$ 
1516 (%i2) foo: read ("foo is", foo, " -- enter new value.")$
1517 foo is 42  -- enter new value. 
1518 (a+b)^3;
1519 (%i3) foo;
1520                                      3
1521 (%o3)                         (b + a)
1522 @end example
1524 @opencatbox{Категории:}
1525 @category{Работа в консоли}
1526 @closecatbox
1528 @end deffn
1530 @deffn {Функция} readonly (@var{expr_1}, ..., @var{expr_n})
1531 Выводит @var{expr_1}, ..., @var{expr_n}, затем считывает одно выражение с консоли
1532 и Возвращает его без вычисления.
1534 @example
1535 (%i1) aa: 7$
1536 (%i2) foo: readonly ("Enter an expression:");
1537 Enter an expression: 
1538 2^aa;
1539                                   aa
1540 (%o2)                            2
1541 (%i3) foo: read ("Enter an expression:");
1542 Enter an expression: 
1543 2^aa;
1544 (%o3)                            128
1545 @end example
1547 См. также @code{read}.
1549 @opencatbox{Категории:}
1550 @category{Работа в консоли}
1551 @closecatbox
1553 @end deffn
1555 @deffn {Функция} reveal (@var{expr}, @var{depth})
1556 Замещает части выражения @var{expr} заданного уровня вложенности @var{depth}
1557 кратким описанием.
1559 @itemize @bullet
1560 @item
1561 Суммы и разности заменяются на @code{Sum(@var{n})},
1562 где @var{n} -- количество слагаемых.
1563 @item
1564 Произведения заменяются на @code{Product(@var{n})},
1565 где @var{n} -- количество множителей.
1566 @item
1567 Степени заменяются на @code{Expt}.
1568 @item
1569 Дроби заменяются на @code{Quotient}.
1570 @item
1571 Унарное отрицание заменяется на @code{Negterm}.
1572 @end itemize
1574 Если @var{depth} больше или равен максимальному уровню вложенности в выражении @var{expr},
1575 то @code{reveal (@var{expr}, @var{depth})} возвращает @var{expr} без изменений.
1577 @code{reveal} вычисляет свои аргументы.
1578 @code{reveal} возвращает анализируемое выражение.
1580 Пример:
1582 @example
1583 (%i1) e: expand ((a - b)^2)/expand ((exp(a) + exp(b))^2);
1584                           2            2
1585                          b  - 2 a b + a
1586 (%o1)               -------------------------
1587                         b + a     2 b     2 a
1588                     2 %e      + %e    + %e
1589 (%i2) reveal (e, 1);
1590 (%o2)                       Quotient
1591 (%i3) reveal (e, 2);
1592                              Sum(3)
1593 (%o3)                        ------
1594                              Sum(3)
1595 (%i4) reveal (e, 3);
1596                      Expt + Negterm + Expt
1597 (%o4)               ------------------------
1598                     Product(2) + Expt + Expt
1599 (%i5) reveal (e, 4);
1600                        2                 2
1601                       b  - Product(3) + a
1602 (%o5)         ------------------------------------
1603                          Product(2)     Product(2)
1604               2 Expt + %e           + %e
1605 (%i6) reveal (e, 5);
1606                          2            2
1607                         b  - 2 a b + a
1608 (%o6)              --------------------------
1609                        Sum(2)     2 b     2 a
1610                    2 %e       + %e    + %e
1611 (%i7) reveal (e, 6);
1612                           2            2
1613                          b  - 2 a b + a
1614 (%o7)               -------------------------
1615                         b + a     2 b     2 a
1616                     2 %e      + %e    + %e
1617 @end example
1619 @opencatbox{Категории:}
1620 @category{Выражения}
1621 @category{Функции вывода}
1622 @closecatbox
1624 @end deffn
1626 @defvr {Управляющая переменная} rmxchar
1627 Значение по умолчанию: @code{]}
1629 Правая сторона матриц изображается символами @code{rmxchar}.
1631 См. также @code{lmxchar}.
1632 @c !!! кстати описания переменной lmxchar в документации нет. :)
1634 @opencatbox{Категории:}
1635 @category{Флаги переменные вывода}
1636 @closecatbox
1638 @end defvr
1640 @deffn {Функция} save (@var{filename}, @var{name_1}, @var{name_2}, @var{name_3}, ...)
1641 @deffnx {Функция} save (@var{filename}, values, functions, labels, ...)
1642 @deffnx {Функция} save (@var{filename}, [@var{m}, @var{n}])
1643 @deffnx {Функция} save (@var{filename}, @var{name_1}=@var{expr_1}, ...)
1644 @deffnx {Функция} save (@var{filename}, all)
1645 @deffnx {Функция} save (@var{filename}, @var{name_1}=@var{expr_1}, @var{name_2}=@var{expr_2}, ...)
1647 Сохраняет текущие значения аргументов @var{name_1}, @var{name_2}, @var{name_3}, ..., в @var{filename}.
1648 Аргументами являются имена переменных, функций и прочих объектов.
1649 Если имя не имеет значения или связанной с ним функцией, оно игнорируется.
1650 @code{save} возвращает @var{filename}.
1652 @code{save} сохраняет данные в форме Lisp выражений.
1653 Данные, сохраненные функцией @code{save}, можно загрузить при помощи @code{load (@var{filename})}.
1655 Глобальная управляющая переменная @code{file_output_append} управляет тем,
1656 будет ли информация добавлена к файлу, или файл будет переписан заново.
1657 Когда @code{file_output_append} равен @code{true}, происходит добавление,
1658 иначе @code{save} переписывает файл вывода. В обоих случаях @code{save} создает
1659 файл, если он до этого не существовал.
1661 Особая форма @code{save (@var{filename}, values, functions, labels, ...)}
1662 сохраняет элементы перечисленные в списках @code{values}, @code{functions}, @code{labels} и т. д.
1663 Возможны любые имена определенные в @code{infolist}.
1664 @code{values} включает все определенные пользователем переменные.
1666 Особая форма @code{save (@var{filename}, [@var{m}, @var{n}])} сохраняет значения
1667 входных и результирующих выражений с номерами от @var{m} до @var{n}.
1668 Заметим, что @var{m} и @var{n} должны быть буквальными целыми.
1669 Входные и результирующие метки можно также записать одну за другой, например, @code{save ("foo.1", %i42, %o42)}.
1670 @code{save (@var{filename}, labels)} сохраняет все входные и результирующие выражения.
1671 Сохраненные выражения при загрузке заменяют существующие.
1673 Особая форма @code{save (@var{filename}, @var{name_1}=@var{expr_1}, @var{name_2}=@var{expr_2}, ...)}
1674 сохраняет значения @var{expr_1}, @var{expr_2}, ... с именами @var{name_1}, @var{name_2}, ...
1675 Эту форму полезно применять для входных и результирующих меток, 
1676 например, @code{save ("foo.1", aa=%o88)}.
1677 С правой стороны равенства в этой форме может стоять любое выражение, которое вычисляется.
1678 Эта форма не вводит новые имена в текущий сеанс Maxima, только сохраняет их в @var{filename}.
1680 Эти особые формы и общую форму функции @code{save} можно как угодно смешивать.
1681 Например: @code{save (@var{filename}, aa, bb, cc=42, functions, [11, 17])}.
1683 Особая форма @code{save (@var{filename}, all)} сохраняет текущее состояние Maxima,
1684 включая все определенные пользователем переменные, функции, массивы и т. д., а также
1685 элементы, заданные автоматически.
1686 Сохраняемые элементы включают в себя системные переменные, такие как @code{file_search_maxima} или @code{showtime},
1687 если пользователь присвоил им новые значения. См. @code{myoptions}.
1689 @code{save} вычисляет @var{filename}, все остальные аргументы не вычисляются.
1691 @opencatbox{Категории:}
1692 @category{Управление сессией}
1693 @category{Вывод файлов}
1694 @closecatbox
1696 @end deffn
1698 @c NEEDS MORE WORK !!!
1699 @defvr {Управляющая переменная} savedef
1700 Значение по умолчанию: @code{true}
1702 Когда @code{savedef} равно @code{true}, Maxima версия определенной пользователем функции
1703 защищается, при ее трансляции. Это позволяет
1704 отобразить ее определение при помощи @code{dispfun} и дает возможность редактировать ее.
1706 Когда @code{savedef} равна @code{false}, имена транслируемых функций
1707 удаляются из списка @code{functions}.
1709 @opencatbox{Категории:}
1710 @category{Флаги и переменные трансляции}
1711 @closecatbox
1713 @end defvr
1715 @c THIS FUNCTION IS IN THE SHARE PACKAGE itensor.lisp
1716 @c MOVE THIS DESCRIPTION TO Itensor.texi
1717 @deffn {Функция} show (@var{expr})
1718 При отображении @code{expr}, у индексированных объектов ковариантные
1719 индексы показываются как нижние, а контравариантные --
1720 как верхние. Индексы дифференцирования отображаются нижними и отделяются от
1721 ковариантных запятой.
1723 @opencatbox{Категории:}
1724 @category{Пакет itensor}
1725 @category{Функции вывода}
1726 @closecatbox
1728 @end deffn
1730 @deffn {Функция} showratvars (@var{expr})
1731 Возвращает список переменных в каноническом рациональном выражении @code{expr}.
1733 См. также @code{ratvars}.
1735 @opencatbox{Категории:}
1736 @category{Рациональные выражения}
1737 @category{Функции вывода}
1738 @closecatbox
1740 @end deffn
1742 @defvr {Управляющая переменная} stardisp
1743 Значение по умолчанию: @code{false}
1745 Когда @code{stardisp} равно @code{true}, произведение отображается 
1746 со звездочкой между операндами.
1748 @opencatbox{Категории:}
1749 @category{Флаги переменные вывода}
1750 @closecatbox
1752 @end defvr
1754 @deffn {Функция} string (@var{expr})
1755 Преобразовывает @code{expr} в линейное представление,
1756 как оно было бы введено с клавиатуры.
1758 Значение, возвращаемое функцией @code{string}, является строкой,
1759 поэтому не может использоваться в вычислениях.
1761 @opencatbox{Категории:}
1762 @category{Строки}
1763 @closecatbox
1765 @end deffn
1767 @defvr {Управляющая переменная} stringdisp
1768 Значение по умолчанию: @code{false}
1770 Когда @code{stringdisp} равна @code{true},
1771 строки отображаются заключенными в двойные кавычки.
1772 В противном случае кавычки опускаются.
1774 @code{stringdisp} всегда @code{true}, при выводе определений функций.
1776 Примеры:
1778 @c ===beg===
1779 @c stringdisp: false$
1780 @c "This is an example string.";
1781 @c foo () := 
1782 @c       print ("This is a string in a function definition.");
1783 @c stringdisp: true$
1784 @c "This is an example string.";
1785 @c ===end===
1786 @example
1787 (%i1) stringdisp: false$
1788 (%i2) "This is an example string.";
1789 (%o2)              This is an example string.
1790 (%i3) foo () :=
1791       print ("This is a string in a function definition.");
1792 (%o3) foo() := 
1793               print("This is a string in a function definition.")
1794 (%i4) stringdisp: true$
1795 (%i5) "This is an example string.";
1796 (%o5)             "This is an example string."
1797 @end example
1799 @opencatbox{Категории:}
1800 @category{Флаги переменные вывода}
1801 @closecatbox
1803 @end defvr
1805 @deffn {Функция} stringout (@var{filename}, @var{expr_1}, @var{expr_2}, @var{expr_3}, ...)
1806 @deffnx {Функция} stringout (@var{filename}, [@var{m}, @var{n}])
1807 @deffnx {Функция} stringout (@var{filename}, input)
1808 @deffnx {Функция} stringout (@var{filename}, functions)
1809 @deffnx {Функция} stringout (@var{filename}, values)
1811 @code{stringout} записывает выражение в файл в той же форме, в которой 
1812 оно было бы введено с клавиатуры. Файл можно использовать в качестве входного для 
1813 команд @code{batch} или @code{demo}, его также можно редактировать для любых целей.
1814 @code{stringout} можно выполнять во время работы @code{writefile}.
1816 Глобальная переменная @code{file_output_append} определяет будет ли 
1817 @code{stringout} добавлять или переписывать выходной файл.
1818 Если @code{file_output_append} равна @code{true},
1819 @code{stringout} дописывает выходной файл, иначе переписывает его.
1820 В обоих случаях @code{stringout} создает файл, если тот не существовал.
1822 Общий вид команды @code{stringout} записывает значения одного или нескольких выражений в файл.
1823 Заметим, что если выражения являются переменной, записывается только значение переменной, но не ее имя.
1824 В полезном специальном случае, выражения могут быть метками входных 
1825 (@code{%i1}, @code{%i2}, @code{%i3}, ...) или результирующих (@code{%o1}, @code{%o2}, @code{%o3}, ...) выражений.
1827 Если @code{grind} равна @code{true}, @code{stringout} форматирует выход используя формат @code{grind}.
1828 Иначе используется формат @code{string}. См. @code{grind} и @code{string}.
1830 Особая форма @code{stringout (@var{filename}, [@var{m}, @var{n})} записывает значения входных выражений,
1831 с номерами от m до n, включительно.
1833 Особая форма @code{stringout (@var{filename}, input)} записывает в файл все входные выражения.
1835 Особая форма @code{stringout (@var{filename}, functions)} записывает в файл все пользовательские функции 
1836 (перечисленные в глобальном списке @code{functions}).
1838 Особая форма @code{stringout (@var{filename}, values)} записывает в файл все пользовательские 
1839 переменные (перечисленные в глобальном списке @code{values}). Каждая переменная выводится как
1840 оператор присваивания: с именем переменной, двоеточием и ее значением. Заметим, что общая форма 
1841 @code{stringout} не выводит переменные в виде операторов присваивания.
1843 @opencatbox{Категории:}
1844 @category{Управление сессией}
1845 @category{Вывод файлов}
1846 @closecatbox
1848 @end deffn
1850 @deffn {Функция} tex (@var{expr})
1851 @deffnx {Функция} tex (@var{expr}, @var{filename})
1852 @deffnx {Функция} tex (@var{expr}, false)
1853 @deffnx {Функция} tex (@var{label})
1854 @deffnx {Функция} tex (@var{label}, @var{filename})
1855 @deffnx {Функция} tex (@var{label}, false)
1857 Отображает выражение в представлении подходящим для системы подготовки документов TeX.
1858 Результат -- фрагмент документа, который можно скопировать в больший документ, но сам по себе
1859 он для обработки не подходит.
1861 @code{tex (@var{expr})} отображает TeX-представление выражения @var{expr} в консоль.
1863 @code{ (@var{label})} отображает TeX-представление выражения, помеченное @var{label},
1864 и назначает его метке выражения (отображаемой слева от выражения).
1865 Метки выражений TeX совпадают с метками Maxima.
1868 @code{tex (@var{expr}, @var{filename})} и @code{tex (@var{label}, @var{filename})}
1869 добавляют свой TeX-вывод в файл @var{filename}.
1871 @code{tex (@var{expr}, false)} и @code{tex (@var{label}, false)}
1872 возвращают свой вывод в виде строки.
1874 @code{tex} вычисляет свой первый аргумент после попытки определить, не является ли он меткой.
1875 Оператор две кавычки @code{''} вызывает вычисление аргумента, предотвращая
1876 попытки проверить, является ли он меткой. 
1878 См. также @code{texput}.
1880 Примеры:
1882 @example
1883 (%i1) integrate (1/(1+x^3), x);
1884                                     2 x - 1
1885                   2            atan(-------)
1886              log(x  - x + 1)        sqrt(3)    log(x + 1)
1887 (%o1)      - --------------- + ------------- + ----------
1888                     6             sqrt(3)          3
1889 (%i2) tex (%o1);
1890 $$-@{@{\log \left(x^2-x+1\right)@}\over@{6@}@}+@{@{\arctan \left(@{@{2\,x-1
1891  @}\over@{\sqrt@{3@}@}@}\right)@}\over@{\sqrt@{3@}@}@}+@{@{\log \left(x+1\right)
1892  @}\over@{3@}@}\leqno@{\tt (\%o1)@}$$
1893 (%o2)                          (\%o1)
1894 (%i3) tex (integrate (sin(x), x));
1895 $$-\cos x$$
1896 (%o3)                           false
1897 (%i4) tex (%o1, "foo.tex");
1898 (%o4)                          (\%o1)
1899 @end example
1901 @code{tex (@var{expr}, false)} возвращает свой вывод в виде строки.
1903 @c ===beg===
1904 @c S : tex (x * y * z, false);
1905 @c S;
1906 @c ===end===
1907 @example
1908 (%i1) S : tex (x * y * z, false);
1909 (%o1) $$x\,y\,z$$
1910 (%i2) S;
1911 (%o2) $$x\,y\,z$$
1912 @end example
1914 @opencatbox{Категории:}
1915 @category{Вывод в формате TeX}
1916 @category{Вывод файлов}
1917 @closecatbox
1919 @end deffn
1921 @deffn {Функция} texput (@var{a}, @var{s})
1922 @deffnx {Функция} texput (@var{a}, @var{s}, @var{operator_type})
1923 @deffnx {Функция} texput (@var{a}, [@var{s_1}, @var{s_2}], matchfix)
1924 @deffnx {Функция} texput (@var{a}, [@var{s_1}, @var{s_2}, @var{s_3}], matchfix)
1926 Задает TeX вывод для атома @var{a}, который может быть символом или именем оператора.
1928 @code{texput (@var{a}, @var{s})} заставляет функцию @code{tex} в своем выводе вставлять
1929 строку @var{s} вместо @var{a}.
1931 @code{texput (@var{a}, @var{s}, @var{operator_type})},
1932 где @var{operator_type} можеть принимать значения @code{prefix}, @code{infix}, @code{postfix}, @code{nary}
1933 или @code{nofix}, заставляет функцию @code{tex} вставлять @var{s} вместо @var{a} и помещать 
1934 вставленный текст в подходящую позицию.
1936 @code{texput (@var{a}, [@var{s_1}, @var{s_2}], matchfix)}
1937 заставляет @code{tex} вставлять @var{s_1} и @var{s_2} в вывод TeX с обоих сторон аргументов атома @var{a}.
1938 Аргументы (если их несколько) разделяются запятыми.
1940 @code{textpput (@var{a}, [@var{s_1}, @var{s_2}, @var{s_3}], matchfix)}
1941 заставляет @code{tex} в TeX-выводе вставлять @var{s_1} и @var{s_2} с обоих сторон аргументов атома @var{a}
1942 и разделять их аргументом @var{s_3}.
1944 Примеры:
1946 Определение TeX вывода переменной.
1947 @c ===beg===
1948 @c texput (me,"\\mu_e");
1949 @c tex (me);
1950 @c ===end===
1952 @example
1953 (%i1) texput (me,"\\mu_e");
1954 (%o1)                         \mu_e
1955 (%i2) tex (me);
1956 $$\mu_e$$
1957 (%o2)                         false
1958 @end example
1960 Определение TeX вывода обычной функции (не оператору).
1961 @c ===beg===
1962 @c texput (lcm, "\\mathrm{lcm}");
1963 @c tex (lcm (a, b));
1964 @c ===end===
1966 @example
1967 (%i1) texput (lcm, "\\mathrm@{lcm@}");
1968 (%o1)                     \mathrm@{lcm@}
1969 (%i2) tex (lcm (a, b));
1970 $$\mathrm@{lcm@}\left(a , b\right)$$
1971 (%o2)                         false
1972 @end example
1974 Определение TeX вывода префиксного оператора.
1975 @c ===beg===
1976 @c prefix ("grad");
1977 @c texput ("grad", " \\nabla ", prefix);
1978 @c tex (grad f);
1979 @c ===end===
1981 @example
1982 (%i1) prefix ("grad");
1983 (%o1)                         grad
1984 (%i2) texput ("grad", " \\nabla ", prefix);
1985 (%o2)                        \nabla 
1986 (%i3) tex (grad f);
1987 $$ \nabla f$$
1988 (%o3)                         false
1989 @end example
1991 Определение вывода инфиксного оператора.
1992 @c ===beg===
1993 @c infix ("~");
1994 @c texput ("~", " \\times ", infix);
1995 @c tex (a ~ b);
1996 @c ===end===
1998 @example
1999 (%i1) infix ("~");
2000 (%o1)                           ~
2001 (%i2) texput ("~", " \\times ", infix);
2002 (%o2)                        \times 
2003 (%i3) tex (a ~ b);
2004 $$a \times b$$
2005 (%o3)                         false
2006 @end example
2008 Определение вывода постфиксного оператора.
2009 @c ===beg===
2010 @c postfix ("##");
2011 @c texput ("##", "!!", postfix);
2012 @c tex (x ##);
2013 @c ===end===
2015 @example
2016 (%i1) postfix ("##");
2017 (%o1)                          ##
2018 (%i2) texput ("##", "!!", postfix);
2019 (%o2)                          !!
2020 (%i3) tex (x ##);
2021 $$x!!$$
2022 (%o3)                         false
2023 @end example
2025 Определение вывода n-арного оператора.
2026 @c ===beg===
2027 @c nary ("@@");
2028 @c texput ("@@", " \\circ ", nary);
2029 @c tex (a @@ b @@ c @@ d);
2030 @c ===end===
2032 @example
2033 (%i1) nary ("@@@@");
2034 (%o1)                          @@@@
2035 (%i2) texput ("@@@@", " \\circ ", nary);
2036 (%o2)                         \circ 
2037 (%i3) tex (a @@@@ b @@@@ c @@@@ d);
2038 $$a \circ b \circ c \circ d$$
2039 (%o3)                         false
2040 @end example
2042 Определение TeX вывода безфиксного оператора без аргументов.
2043 @c ===beg===
2044 @c nofix ("foo");
2045 @c texput ("foo", "\\mathsc{foo}", nofix);
2046 @c tex (foo);
2047 @c ===end===
2049 @example
2050 (%i1) nofix ("foo");
2051 (%o1)                          foo
2052 (%i2) texput ("foo", "\\mathsc@{foo@}", nofix);
2053 (%o2)                     \mathsc@{foo@}
2054 (%i3) tex (foo);
2055 $$\mathsc@{foo@}$$
2056 (%o3)                         false
2057 @end example
2059 Назначение вывода матчфиксному парному оператору.
2060 @c ===beg===
2061 @c matchfix ("<<", ">>");
2062 @c texput ("<<", [" \\langle ", " \\rangle "], matchfix);
2063 @c tex (<<a>>);
2064 @c tex (<<a, b>>);
2065 @c texput ("<<", [" \\langle ", " \\rangle ", " \\, | \\,"], 
2066 @c       matchfix);
2067 @c tex (<<a>>);
2068 @c tex (<<a, b>>);
2069 @c ===end===
2071 @example
2072 (%i1) matchfix ("<<", ">>");
2073 (%o1)                          <<
2074 (%i2) texput ("<<", [" \\langle ", " \\rangle "], matchfix);
2075 (%o2)                [ \langle ,  \rangle ]
2076 (%i3) tex (<<a>>);
2077 $$ \langle a \rangle $$
2078 (%o3)                         false
2079 (%i4) tex (<<a, b>>);
2080 $$ \langle a , b \rangle $$
2081 (%o4)                         false
2082 (%i5) texput ("<<", [" \\langle ", " \\rangle ", " \\, | \\,"],
2083       matchfix);
2084 (%o5)           [ \langle ,  \rangle ,  \, | \,]
2085 (%i6) tex (<<a>>);
2086 $$ \langle a \rangle $$
2087 (%o6)                         false
2088 (%i7) tex (<<a, b>>);
2089 $$ \langle a \, | \,b \rangle $$
2090 (%o7)                         false
2091 @end example
2093 @opencatbox{Категории:}
2094 @category{Вывод в формате TeX}
2095 @closecatbox
2097 @end deffn
2099 @c NEEDS CLARIFICATION
2100 @deffn {Функция} system (@var{command})
2101 Выполняет команду @var{command} как отдельный процесс. 
2102 Команда отправляется на выполнение командной оболочке, заданной по умолчанию.
2103 @code{system} поддерживается не всеми операционными системами, она в основном существует 
2104 в Unix и Unix-подобных окружениях.
2106 Предположим, что @code{_hist.out} -- список частот, который вы хотите изобразить в виде гистограммы
2107 при помощи программы @code{xgraph}.
2109 @example
2110 (%i1) (with_stdout("_hist.out",
2111            for i:1 thru length(hist) do (
2112              print(i,hist[i]))),
2113        system("xgraph -bar -brw .7 -nl < _hist.out"));
2114 @end example
2116 Для того чтобы создать готовый график в фоновом режиме (вернуться к управлению Maxima)
2117 и удалить временный файл после завершения, сделайте так:
2119 @example
2120 system("(xgraph -bar -brw .7 -nl < _hist.out;  rm -f _hist.out)&")
2121 @end example
2123 @end deffn
2125 @defvr {Управляющая переменная} ttyoff
2126 Значение по умолчанию: @code{false}
2128 Когда @code{ttyoff} равна @code{true}, выводимые выражения не отображаются.
2129 Выводимые выражения по прежнему вычисляются и связываются с метками. См. @code{labels}.
2131 @code{ttyoff} не влияет на текст, отображаемый встроенными функциями, такой как 
2132 сообщения об ошибках и вывод @code{describe}.
2134 @opencatbox{Категории:}
2135 @category{Флаги переменные вывода}
2136 @closecatbox
2138 @end defvr
2140 @deffn {Функция} with_stdout (@var{f}, @var{expr_1}, @var{expr_2}, @var{expr_3}, ...)
2141 @deffnx {Функция} with_stdout (@var{s}, @var{expr_1}, @var{expr_2}, @var{expr_3}, ...)
2142 Вычисляет @var{expr_1}, @var{expr_2}, @var{expr_3}, ... и записывает любой сгенерированный
2143 вывод в файл @var{f} или в выходной поток @var{s}.
2144 Вычисленные выражения не записываются в вывод.
2145 Вывод может генерироваться кроме прочих функциями @code{print}, @code{display}, @code{grind}.
2147 Глобальная переменная @code{file_output_append} управляет тем, будет ли @code{with_stdout}
2148 дописывать или переписывать заново файл @var{f}.
2149 Если @code{file_output_append} равна @code{true}, @code{with_stdout} добавляет вывод к файлу.
2150 Иначе @code{with_stdout} переписывает файл.
2151 В обоих случаях, @code{with_stdout} создает файл, если тот не существовал.
2153 @code{with_stdout} возвращает значение своего последнего аргумента.
2155 См. также  @code{writefile}.
2157 @c THIS DOESN'T SEEM VERY IMPORTANT TO MENTION ...
2158 @c Note the binding of display2d to be
2159 @c false, otherwise the printing will have things like "- 3" instead
2160 @c of "-3".
2162 @example
2163 @c THIS EXAMPLE USES SOME UNIX-ISH CONSTRUCTS -- WILL IT WORK IN WINDOWS ???
2164 @c ALSO IT'S SORT OF COMPLICATED AND THE SIMPLER SECOND EXAMPLE ILLUSTRATES with_stdout BETTER !!!
2165 @c mygnuplot (f, var, range, number_ticks) :=
2166 @c  block ([numer:true, display2d:false],
2167 @c  with_stdout("tmp.out",
2168 @c    dx: (range[2]-range[1])/number_ticks,
2169 @c    for x: range[1] thru range[2] step dx
2170 @c       do print (x, at (f, var=x))),
2171 @c  system ("echo \"set data style lines; set title '", f,"' ;plot '/tmp/gnu'
2172 @c ;pause 10 \" | gnuplot"))$
2173 (%i1) with_stdout ("tmp.out", for i:5 thru 10 do
2174       print (i, "! yields", i!))$
2175 (%i2) printfile ("tmp.out")$
2176 5 ! yields 120 
2177 6 ! yields 720 
2178 7 ! yields 5040 
2179 8 ! yields 40320 
2180 9 ! yields 362880 
2181 10 ! yields 3628800
2182 @end example
2184 @opencatbox{Категории:}
2185 @category{Вывод файлов}
2186 @closecatbox
2188 @end deffn
2190 @deffn {Функция} writefile (@var{filename})
2191 Начинает записывать копию сессии Maxima в @var{filename}.
2192 Все взаимодействия между пользователем и Maxima  записываются в этот файл точно в том виде,
2193 в котором они показываются в консоли.
2195 Копия печатается в формате консольного вывода, который не может быть перезагружен в Maxima.
2196 Если хотите создать файл, содержащий выражения, с возможностью его загрузки, см. @code{save} и @code{stringout}.
2197 @code{save} сохраняет выражения в форме Lisp, в то время как @code{stringout} сохраняет их в форме Maxima. 
2199 Результат выполнения @code{writefile}, когда @var{filename} уже существует, зависит
2200 от реализации лежащего в основе Lisp. Выходной файл может быть стерт или дописан.
2201 @code{appendfile} всегда дописывает файл.
2203 Может оказаться удобным выполнить @code{playback} после @code{writefile} чтобы сохранить 
2204 отображение предыдущих взаимодействий. Так @code{playback} отображает только входные или результирующие 
2205 переменные (@code{%i1}, @code{%o1} и т. д.), любой вывод, создаваемый печатающими выражениями в 
2206 функциях (в противоположность возвращаемому значению), не отображается функцией @code{playback}.
2208 @code{closefile} закрывает файл, который открыла @code{writefile} или @code{appendfile}.
2210 @opencatbox{Категории:}
2211 @category{Вывод файлов}
2212 @category{Работа в консоли}
2213 @closecatbox
2215 @end deffn