WxMaxima

1 The wxMaxima user manual

WxMaxima — графический интерфейс пользователя для системы компьютерной алгебры (СКА) Maxima. WxMaxima позволяет использовать все функции Maxima. А также предоставляет ряд удобных мастеров для работы с наиболее часто используемыми функциями. Данное руководство описывает некоторые из тех функций, которые делают wxMaxima одним из наиболее популярных графических интерфейсов для Maxima.


2 Introduction to wxMaxima

2.1 Maxima and wxMaxima

В области открытого программного обеспечения большие системы обычно делятся на небольшие проекты, которые проще обслуживать небольшим группам разработчиков. Например, программа записи компакт-дисков будет состоять из средства командной строки, которое фактически выполняет запись CD, и графического интерфейса пользователя, позволяющего выполнять запись без необходимости изучения всех ключей командной строки, как и вообще без необходимости использования консоли. Одним из преимуществ такого подхода является возможность применить силы и средства, вложенные в разработку консольной программы, в работе сразу нескольких программ: одна и та же программа записи компакт-дисков может использоваться и в виде модуля файлового менеджера «Отправить на CD», и в качестве функции музыкального проигрывателя «Запись на CD», и в качестве программы записи CD в составе системы резервного копирования DVD. Другим преимуществом такого подхода является разделение одной большой задачи на меньшие части, позволяющее разработчикам создавать несколько интерфейсов для одной и той же программы.

Система компьютерной алгебры (СКА) в исполнении Maxima вполне вписывается в эту парадигму. СКА может выполнять роль логики калькулятора произвольной точности, либо осуществлять автоматические преобразования формул в составе более крупной системы (например, Sage). И при этом вполне может применяться и в качестве независимой системы. Работать с Maxima можно в командной строке. Однако часто интерфейс в стиле wxMaxima обеспечивает более эффективную работу с ПО, особенно новичкам.

2.1.1 Maxima

Maxima является полноценной системой компьютерной алгебры (СКА). СКА представляет собой программу, которая решает математические задачи путём преобразования формул для нахождения формулы, способной решить заданную задачу, в противоположность простому выводу численного значения результата. Иными словами, Maxima может служить в качестве калькулятора, выводящего численные представления переменных, и вместе с тем может выдавать и аналитические решения. Более того, она предлагает ряд численных методов анализа для уравнений или систем уравнений, которые не могут быть решены аналитически.

Снимок экрана Maxima, командная строка

Extensive documentation for Maxima is available in the internet. Part of this documentation is also available in wxMaxima’s help menu. Pressing the Help key (on most systems the F1 key) causes wxMaxima’s context-sensitive help feature to automatically jump to Maxima’s manual page for the command at the cursor.

2.1.2 WxMaxima

WxMaxima — это графический интерфейс пользователя, полностью сохраняющий функциональность и гибкость Maxima. WxMaxima предлагает пользователям графическое отображение наряду с множеством функциональных возможностей, позволяющих сделать работу с Maxima более простой и приятной. Например, wxMaxima может экспортировать содержимое любого поля (а при необходимости и любой части формулы) в виде текста в формате LaTeX или MathML по щелчку правой клавиши мыши. Это позволяет экспортировать целую книгу либо в виде HTML-файла, либо в виде файла LaTeX. Документация wxMaxima, включая рабочие книги для иллюстрации аспектов использования программы, доступна онлайн на сайте справки wxMaxima, а также в меню справки программы.

Окно wxMaxima

Введённые в wxMaxima вычисления выполняются в фоновом режиме консольной программой Maxima.

2.2 Workbook basics

Большая часть интерфейса wxMaxima интуитивно понятна, но некоторые детали требуют особенного внимания. Этот сайт содержит несколько рабочих книг, помогающих разобраться в различных аспектах работы с wxMaxima. Проработка некоторых из них (особенно «(wx)Maxima за 10 минут») позволит лучше ознакомиться как с содержимым Maxima, так и с использованием wxMaxima во взаимодействии с Maxima. Это руководство концентрируется на описании таких аспектов wxMaxima, которые не будут интуитивно понятны, и описание которых может отсутствовать в материалах, доступных онлайн.

2.2.1 The workbook approach

Одним из незначительного числа нестандартных подходов, нашедших применение в wxMaxima, является организация данных для работы с Maxima по полям, которые вычисляются (имеется в виду «отправляются в Maxima») только по требованию пользователя. При вычислении поля все команды в этом поле, и только в этом поле, вычисляются путём пакетной обработки. (Предыдущее высказывание не совсем точно: можно выбрать несколько смежных полей для совместного вычисления. Также Maxima может вычислять сразу все поля в рабочей книге за один проход.) Принятый в wxMaxima подход к отправке команд для вычисления на первый взгляд может показаться необычным. Однако он значительно упрощает работу с большими документами (где пользователю не нужно, чтобы каждое изменение автоматически запускало полный пересчёт целого документа). А также данный подход очень удобен для отладки.

При вводе текста wxMaxima автоматически создаёт новое поле рабочего листа. Тип этого поля можно выбрать на панели инструментов. Если создано поле кода, то его можно отправить в Maxima, после чего под этим кодом выводится результат вычисления. Пара таких команд показана ниже.

Поле ввода/вывода

При вычислении содержимого, введённого в поле ввода, Maxima назначает вводу метку (по умолчанию отображается красным и распознаётся по %i), позволяющую позднее сослаться на него в сеансе wxMaxima. Сгенерированный в Maxima вывод также получает метку, начинающуюся с %o и по умолчанию скрытую, если только пользователь не назначит выводу имя. Тогда по умолчанию будет показана заданная пользователем метка. Но и автоматически создаваемая в Maxima метка в виде %o также будет доступна.

Помимо полей ввода, wxMaxima позволяет создавать текстовые поля для документации, поля изображений, поля заголовков, поля глав и поля разделов. Каждое поле имеет свой собственный буфер отмены действий, поэтому можно легко выполнять отладку, изменяя значения нескольких полей и затем постепенно отменяя ненужные изменения. Более того, сам рабочий лист имеет глобальный буфер отмены действий, позволяющий отменять изменение, добавление и удаление полей.

На рисунке ниже показаны различные типы полей (поля заголовков, поля разделов, поля подразделов, текстовые поля, поля ввода/вывода и поля изображений).

Пример различных полей wxMaxima

2.2.2 Cells

Рабочий лист состоит из полей. WxMaxima оперирует следующими их типами:

По умолчанию при вводе текста в wxMaxima автоматически создаётся математическое поле. Поля других типов можно создавать через меню «Поле», с помощью указанных там сочетаний клавиш или раскрывающегося списка на панели инструментов. При создании не-математического поля любой текст, введённый в файл, интерпретируется как текст.

Текст комментария (в стиле языка C) может использоваться в математических полях следующим образом: /* Этот комментарий будет игнорироваться Maxima */

«/*» указывает начало комментария, «*/» указывает его конец.

2.2.3 Horizontal and vertical cursors

Если пользователь пытается выделить предложение полностью, текстовый процессор будет автоматически пытаться расширить выделение, чтобы оно начиналось и завершалось на границе слова. Подобным образом при выборе более одного поля wxMaxima расширяет выделение до целых полей.

Необычной возможностью wxMaxima является гибкость при перетаскивании, реализованная благодаря определению двух типов курсоров. При необходимости wxMaxima переключается между ними автоматически:

When you start wxMaxima, you will only see the blinking horizontal cursor. If you start typing, a math cell will be automatically created and the cursor will change to a regular vertical one (you will see a right arrow as “prompt”, after the Math cell is evaluated (CTRL+ENTER), you will see the labels, e.g. (%i1), (%o1)).

(Мигающий) горизонтальный курсор после запуска wxMaxima

Может понадобиться создать поле другого типа (с помощью меню «Поле»), например, поле заголовка или текстовое поле с описанием того, что будет сделано, при начале создания рабочего листа.

При переходе по различным полям также отображается (мигающий) горизонтальный курсор в местах, где в рабочий лист можно вставить поле (математическое поле — простым вводом формулы, поле другого типа — с помощью меню).

(Мигающий) горизонтальный курсор между полями

2.2.4 Sending cells to Maxima

The command in a code cell is executed once by pressing CTRL+ENTER, SHIFT+ENTER or the ENTER key on the keypad. The wxMaxima default is to enter commands when either CTRL+ENTER or SHIFT+ENTER is entered, but wxMaxima can be configured to execute commands in response to ENTER.

2.2.5 Command autocompletion

WxMaxima contains an autocompletion feature that is triggered via the menu (Cell/Complete Word) or alternatively by pressing the key combination CTRL+SPACE. The autocompletion is context-sensitive. For example, if activated within a unit specification for ezUnits it will offer a list of applicable units.

ezUnits

Besides completing a file name, a unit name, or the current command or variable name, the autocompletion is able to show a template for most of the commands indicating the type (and meaning) of the parameters this program expects. To activate this feature press SHIFT+CTRL+SPACE or select the respective menu item (Cell/Show Template).

2.2.5.1 Greek characters

Компьютеры традиционно хранят символы в 8-разрядных значениях. Это позволяет создать набор из 256 различных символов. В такой набор можно включить все буквы, цифры и управляющие символы (конец передачи, конец строки, линии и углы для рисования прямоугольников меню и т.д..) практически любого языка.

Для большинства стран в кодовую страницу из выбранных 256 символов не входят греческие буквы, хотя они часто используются в математике. Для преодоления данного ограничения был разработан Юникод: кодировка, позволяющая использовать латиницу как обычно, но при этом содержащая намного больше 256 символов.

Maxima позволяет использовать Юникод, если её сборка выполнялась компилятором Lisp, который либо поддерживает Юникод, либо не принимает во внимание кодировку шрифта. Поскольку из пары представленных условий по крайней мере одно может оказаться справедливым, wxMaxima поддерживает ввод греческих символов с помощью клавиатуры:

кл. греч. буква кл. греч. буква кл. греч. буква
a альфа i йота r ро
b бета k каппа s сигма
g гамма l лямбда t тау
d дельта m мю u ипсилон
e эпсилон n ню f фи
z дзета x кси c хи
h эта om омикрон y пси
q тэта p пи o омега
A Альфа I Йота R Ро
B Бета K Каппа S Сигма
G Гамма L Лямбда T Тау
D Дельта M Мю U Ипсилон
E Эпсилон N Ню P Фи
Z Дзета X Кси C Хи
H Эта Om Омикрон Y Пси
T Тэта P Пи O Омега

Для ввода греческих букв также можно воспользоваться боковой панелью «Греческие буквы».

2.2.5.1.1 Attention: Lookalike characters

Несколько букв латиницы схожи с греческими буквами. Например, латинская «A» и греческая буква «Альфа». Однако, несмотря на кажущееся сходство, это два разных символа, представленных разными кодовыми точками (числами) в Юникоде.

Могут возникнуть проблемы, если задать значение переменной A, но впоследствии пытаться использовать греческую букву Альфа для выполнения каких-либо операций с этой переменной, особенно при печати. Для греческой буквы Мю (которая может использоваться и в качестве приставки микро-) также есть две разных кодовых точки Юникода.

Поэтому на боковой панели «Греческие буквы» имеется параметр, позволяющий сделать схожие буквы недоступными (изменяется в контекстном меню).

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

клавиши для ввода математический символ
hbar постоянная Планка: h с горизонтальной линией сверху
Hbar H с горизонтальной линией сверху
2 квадрат
3 куб
/2 1/2
partial знак частной производной (d в dx/dt)
integral знак интеграла
sq квадратный корень
ii мнимая единица
ee элемент
in включается
impl implies импликация
inf бесконечность
empty пустое множество
TB большой треугольник направо
tb малый треугольник направо
and и
or или
xor исключающее или
nand не-и
nor не-или
equiv эквивалентно
not не
union объединение
inter пересечение
subseteq подмножество или равно
subset подмножество
notsubseteq не подмножество или равно
notsubset не подмножество
approx приблизительно
propto пропорционально
neq != /= or # не равно
+/- or pm знак плюс/минус
<= or leq меньше или равно
>= or geq больше или равно
<< or ll намного меньше
>> or gg намного меньше
qed конец доказательства
nabla оператор Лапласа
sum знак суммы
prod знак умножения
exists квантор существования
nexists квантор несуществования
parallel знак параллельности
perp знак перпендикулярности
leadsto знак «отсюда следует»
-> стрелка направо
–> длинная стрелка направо

Для ввода математических символов также можно использовать боковую панель «Математические символы».

If a special symbol isn’t in the list, it is possible to input arbitrary Unicode characters by pressing ESC [number of the character (hexadecimal)] ESC. Additionally the “symbols” sidebar has a right-click menu that allow to display a list of all available Unicode symbols one can add to this toolbar or to the worksheet.

ESC61ESC therefore results in an a.

Обратите внимание, что большая часть этих символов (заметным исключением являются логические символы) не имеют специального значения в Maxima и поэтому будут интерпретироваться как обычные символы. Если Maxima собрана в компиляторе Lisp, не имеющем поддержки символов Юникода, то при их использовании может быть выведено сообщение об ошибке.

It may be the case that e.g. Greek characters or mathematical symbols are not included in the selected font, then they can not be displayed. To solve that problem, select other fonts (using: Edit -> Configure -> Style).

2.2.6 Unicode replacement

wxMaxima заменяет некоторые символы Юникода на соответствующие выражения Maxima, например, ² на ^2, ³ на ^3, знак квадратного корня на функцию sqrt(), (математический) знак Сигма (отличающийся от символа Юникода для соответствующей греческой буквы) на sum() и так далее.

В Юникоде есть несколько «правильных» дробей, представленных в виде одной кодовой точки Юникода: ¼, ½, ¾, ⅐, ⅑, ⅒, ⅓, ⅔, ⅕, ⅖, ⅗, ⅘, ⅙, ⅚, ⅛, ⅜, ⅝, ⅞

wxMaxima заменит их соответствующими представлениями Maxima (например, (1/4)) перед отправкой ввода в Maxima. Кроме того, заменяется на 1/, а (используется в бейсболе) — на (0/3).

В полях ввода рекомендуется использовать код Maxima (а не эти кодовые точки Юникода) (обоснование: (a) их может не быть в используемом для ввода математических данных шрифте; (b) если сохранить документ как файл wxm, он будет доступен для чтения (командной строкой) Maxima, но эти изменения не будут работать в командной строке Maxima); но они могут появиться при вырезании и вставке формулы из другого документа.

2.2.7 Side Panes

Наиболее важные команды Maxima, а также содержание, окна с отладочными сообщениями и журнал последних отданных команд доступны на соответствующих боковых панелях. Их можно активировать с помощью меню «Вид» и переместить в любое место внутри или за пределами окна wxMaxima. Также можно открыть панель, позволяющую вводить греческие буквы с помощью мыши.

Пример различных боковых панелей

Боковая панель «Содержание» позволяет повышать или понижать уровень заголовка путём щелчка по нему правой клавишей мыши с последующим выбором ближайшего более высокого или низкого уровня.

Повышение или понижение уровня заголовков на боковой панели «Содержание»

2.2.8 MathML output

Несколько текстовых процессоров и подобных им программ либо способны распознать ввод MathML и автоматически вставить его в виде редактируемого двухмерного уравнения, либо (как LibreOffice) имеют редактор уравнений, позволяющий «импортировать MathML из буфера обмена». Другие поддерживают RTF maths. Поэтому в контекстном меню wxMaxima доступно несколько пунктов.

2.2.9 Markdown support

WxMaxima поддерживает стандартные элементы форматирования Markdown, которые не конфликтуют с математической записью. Одним из таких элементов являются маркированные списки.

Ordinary text
 * One item, indentation level 1
 * Another item at indentation level 1
   * An item at a second indentation level
   * A second item at the second indentation level
 * A third item at the first indentation level
Ordinary text

WxMaxima will recognize text starting with > chars as block quotes:

Ordinary text
> quote quote quote quote
> quote quote quote quote
> quote quote quote quote
Ordinary text

WxMaxima’s TeX and HTML output will also recognize => and replace it by the corresponding Unicode sign:

cogito => sum.

Other symbols the HTML and TeX export will recognize are <= and >= for comparisons, a double-pointed double arrow (<=>), single-headed arrows (<->, -> and <-) and +/- as the respective sign. For TeX output also << and >> are recognized.

2.2.10 Hotkeys

Большинство сочетаний клавиш можно найти в тексте соответствующих меню. Поскольку они фактически берутся из текста меню и могут быть локализованы при переводе wxMaxima для использования клавиатур с соответствующими локальными настройками, мы не будем приводить их здесь. Хотя несколько сочетаний клавиш с их псевдонимами в меню отсутствуют:

2.2.11 Raw TeX in the TeX export

Если текстовое поле начинается с TeX: экспорт в TeX будет содержать дословный текст, который который следует за меткой TeX:. Эта функция позволяет вводить разметку TeX непосредственно в рабочую книгу wxMaxima.

2.3 File Formats

Разрабатываемые в сеансе wxMaxima материалы можно сохранять для дальнейшего использования одним из трёх способов:

2.3.1 .mac

Файлы .mac представляют собой обычные текстовые файлы, содержащие команды Maxima. Их можно считывать с помощью команд Maxima batch() или load(), либо с помощью пункта меню wxMaxima «Файл/Пакетный файл».

Ниже приводится один пример. Quadratic.mac определяет функцию, после чего генерирует график с помощью wxdraw2d(). Впоследствии выводится содержимое файла Quadratic.mac и вычисляется вновь определённая функция f().

Загрузка файла с помощью batch()

Внимание: несмотря на то, что файл Quadratic.mac имеет обычное расширение Maxima (.mac), прочитать его сможет только wxMaxima, поскольку команда wxdraw2d() является расширением wxMaxima для Maxima. (Командная строка) Maxima проигнорирует неизвестную команду wxdraw2d(), просто продублировав её имя в выводе.

Файлы .mac можно использовать для создания собственной библиотеки макросов. Но, поскольку они не содержат достаточно информации по структуре, они не могут быть считаны как сеанс wxMaxima.

2.3.2 .wxm

.wxm files contain the worksheet except for Maxima’s output. On Maxima versions >5.38 they can be read using Maxima’s load() function just as .mac files. Well - mostly. Questions (like asksign(x)) are problematic, as the answer is written in the .wxm file (so that it can be suggested after loading), but that can Maxima not evaluate. You can prevent Maxima from asking questions by using assume() to declare some properties, Maxima wants to know.

With this plain-text format, it sometimes is unavoidable that worksheets that use new features are not downwards-compatible with older versions of wxMaxima.

2.3.2.1 File format of wxm files

Это файл с обычным текстом (открывается в текстовом редакторе), в котором содержимое полей хранится в виде специальных комментариев Maxima.

Файл начинается со следующего комментария:

/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/
/* [ Created with wxMaxima version 24.02.2_DevelopmentSnapshot ] */

Затем следуют поля, записанные в виде комментариев Maxima. Например, поле раздела:

/* [wxMaxima: section start ]
Title of the section
   [wxMaxima: section end   ] */

или (разумеется, в математическом поле ввод будет не закомментирован (вывод не сохраняется в файле wxm)):

/* [wxMaxima: input   start ] */
f(x):=x^2+1$
f(2);
/* [wxMaxima: input   end   ] */

Изображения закодированы в Base64. В первой строке находится тип изображения:

/* [wxMaxima: image   start ]
jpg
[very chaotic looking character sequence]
   [wxMaxima: image   end   ] */

Разрыв страницы представляет собой одну строку следующего содержания:

/* [wxMaxima: page break    ] */

Свёрнутые поля обозначаются так:

/* [wxMaxima: fold    start ] */
...
/* [wxMaxima: fold    end   ] */

2.3.3 .wxmx

Этот файл на основе формата XML сохраняет рабочий лист целиком, включая такие параметры, как масштаб отображения и список отслеживания. Это рекомендуемый формат.

2.3.3.1 File format of wxmx files

Файл wxmx похож на двоичный формат, но работать с ним можно с помощью базовых инструментов ОС. Это файл zip, который можно разархивировать с помощью программы unzip (рекомендуется переименовать файл, чтобы программа unzip могла распознать его в ОС). При создании файла используется не функция сжатия, а возможность объединять несколько файлов в один — изображения уже сжаты, а всё остальное представлено простым текстом (занимает куда меньший объём, чем громадные включаемые изображения).

Содержит следующие файлы:

Таким образом, в случае появления ошибок можно разархивировать документ wxMaxima (рекомендуется сначала переименовать его в файл zip), внести изменения в файл content.xml в текстовом редакторе или заменить повреждённое изображение, снова добавить файлы в архив и заменить расширение zip на wxmx — и получаем отредактированный файл wxmx.

2.4 Configuration options

Для некоторых общих переменных конфигурации wxMaxima обеспечивает два вида настройки:

Конфигурация wxMaxima 1

2.4.1 Default animation framerate

Значение частоты кадров анимации, использующееся при создании новых анимаций, хранится в переменной wxanimate_framerate. Начальное значение этой переменной, которое будет содержаться в новом рабочем листе, можно изменить в диалоговом окне настройки параметров конфигурации.

2.4.2 Default plot size for new maxima sessions

Начиная со следующего запуска, указанный размер будет использоваться для создания графиков, встраиваемых в рабочий лист, если значение параметра wxplot_size не изменялось Maxima.

Чтобы задать размер одного графика, используйте следующую запись при установке значения переменной для одной команды:

wxdraw2d(
   explicit(
       x^2,
       x,-5,5
   )
), wxplot_size=[480,480]$

2.4.3 Match parenthesis in text controls

Этот параметр активирует сразу две функции:

2.4.4 Don’t save the worksheet automatically

При включении этого параметра файл с рабочим листом перезаписывается только по требованию пользователя. В случае сбоя/отключении питания/… свежая резервная копия остаётся доступной во временном каталоге.

Если этот параметр не включён, работа wxMaxima больше напоминает современное приложение сотового телефона:

2.4.5 Where is the configuration saved?

If you are using Unix/Linux, the configuration information will be saved in a file .wxMaxima in your home directory (if you are using wxWidgets < 3.1.1), or .config/wxMaxima.conf ((XDG-Standard) if wxWidgets >= 3.1.1 is used). You can retrieve the wxWidgets version from the command wxbuild_info(); or by using the menu option Help->About. wxWidgets is the cross-platform GUI library, which is the base for wxMaxima (therefore the wx in the name). (Since the filename starts with a dot, .wxMaxima or .config will be hidden).

При использовании Windows параметры конфигурации будут храниться в реестре. Расположение записей wxMaxima в реестре: HKEY_CURRENT_USER\Software\wxMaxima


3 Extensions to Maxima

WxMaxima является прежде всего графическим интерфейсом пользователя для Maxima. В этом качестве её главной целью является передача команд Maxima и получение результатов выполнения этих команд. Однако в некоторых случаях wxMaxima позволяет дополнить функциональные возможности Maxima. Уже упоминалась способность wxMaxima генерировать отчёты путём экспорта содержимого рабочей книги в файлы HTML и LaTeX. Этот раздел описывает способы, которые wxMaxima использует для усовершенствования использования графики в сеансе.

3.1 Subscripted variables

Параметр wxsubscripts указывает, будет ли (и как) wxMaxima автоматически переводить в нижний индекс имена переменных:

При значении false эта функциональная возможность отключена; wxMaxima не будет автоматически переводить в нижний индекс часть имён переменных после символа подчёркивания.

При значении 'all весь текст после символа подчёркивания будет переводиться в нижний индекс.

При значении true имена переменных в формате x_y отображаются как нижний индекс, если:

Как переменные автоматически переводятся в нижний индекс с помощью wxsubscripts

Если имя переменной не соответствует этим требованиям, её всё равно можно объявить в качестве «подлежащей переводу в нижний индекс» с помощью команды wxdeclare_subscript(variable_name); или wxdeclare_subscript([variable_name1,variable_name2,...]); Объявление переменной в качестве переведённой в нижний индекс можно отменить с помощью команды: wxdeclare_subscript(variable_name,false);

You can use the menu “View->Autosubscript” to set these values.

3.2 User feedback in the status bar

Работающие на протяжении длительного времени команды могут выводить информацию в строку состояния. Новая информация последовательно заменяет размещённую там старую (что позволяет использовать строку состояния в качестве индикатора хода выполнения) и удаляется сразу по завершении выполнения текущей отправленной в Maxima команды. Можно использовать wxstatusbar() даже в тех библиотеках, которые могут работать с обычной Maxima (а не wxMaxima): при отсутствии wxMaxima команда wxstatusbar() просто не будет обрабатываться.

for i:1 thru 10 do (
    /* Tell the user how far we got */
    wxstatusbar(concat("Pass ",i)),
    /* (sleep n) is a Lisp function, which can be used */
    /* with the character "?" before. It delays the */
    /* program execution (here: for 3 seconds) */
    ?sleep(3)
)$

3.3 Exporting the worksheet from within Maxima

The command wxworksheettohtml() exports the current worksheet to an HTML file from within a running Maxima session, which is convenient for scripted or batch export. Like wxstatusbar() it is safe to use in code that might also run in plain (console) Maxima: if wxMaxima isn’t present the command is simply left unevaluated.

wxworksheettohtml("report.html")$
wxworksheettohtml("report.html", flavor="svg", wxmx=true)$

A relative file name is interpreted relative to Maxima’s working directory. The optional keyword options are:

option values meaning
flavor mathml (default), mathjax, svg, bitmap how the equations are rendered in the exported page
wxmx false (default), true embed a downloadable .wxmx copy of the session

The flavor values match the equation formats offered by the graphical File → Export dialog: mathml produces a self-contained page that needs no internet connection, mathjax adds a MathJaX fall-back for browsers that still lack MathML, and svg/bitmap render every equation to an image.

The companion command wxworksheettotex() exports to a LaTeX (.tex) file the same way:

wxworksheettotex("report.tex")$
wxworksheettotex("report.tex", documentclass="report", documentclassoptions="12pt,a4paper")$
option meaning
documentclass overrides the LaTeX \documentclass (e.g. "article", "report")
documentclassoptions overrides its options (e.g. "12pt,a4paper")

Support for wxworksheettopdf() is planned.

3.4 Plotting

Построение графиков (в основном в связи с графической системой) предполагает, что графический интерфейс пользователя предоставит ряд расширений для исходной программы.

3.4.1 Embedding a plot into the worksheet

Обычно Maxima использует внешнюю программу Gnuplot, которая открывает отдельное окно для каждого создаваемого графика. Поскольку часто удобнее не делать так, а встраивать графики в рабочий лист, wxMaxima предоставляет собственный набор графических функций, которые отличаются от соответствующих функций Maxima только именем: все они имеют префикс “wx”.

Следующие графические функции имеют wx-аналоги:

Графическая функция wxMaxima Графическая функция Maxima
wxplot2d() plot2d
wxplot3d() plot3d
wxdraw2d() draw2d
wxdraw3d() draw2d
wxdraw() draw
wximplicit_plot() implicit_plot
wxhistogram() histogram
wxscatterplot() scatterplot
wxbarsplot() barsplot
wxpiechart() piechart
wxboxplot() boxplot

Если Maxima прочитает файл wxm (в консоли), то эти функции игнорируются (печатаются в выводе, как и другие неизвестные функции в Maxima).

При появлении проблем с работой одной из этих функций рекомендуется проверить, существуют ли эти проблемы также и для функции Maxima (например, если wxplot2d() возвращает ошибку, проверьте тот же график с помощью команды Maxima plot2d() (она открывает график в отдельном окне)). Если проблемы остались, вероятнее всего, что дело в ошибке Maxima; следует сообщить о ней с помощью системы отслеживания ошибок Maxima. Либо это может быть ошибкой Gnuplot.

3.4.2 Making embedded plots bigger or smaller

Как указано выше, диалоговое окно настройки конфигурации позволяет изменять размер по умолчанию для создаваемых графиков, устанавливая начальное значение параметра wxplot_size. Графические процедуры wxMaxima используют эту переменную для получения размера графика в пикселах. Её значение всегда можно запросить или использовать для установки размера последующих графиков:

wxplot_size:[1200,800]$
wxdraw2d(
    explicit(
        sin(x),
        x,1,10
    )
)$

Если изменить размер необходимо только у одного графика, Maxima обеспечивает канонический путь изменения атрибута только для текущего поля. В этом случае строка установки параметра wxplot_size = [value1, value2] добавляется к команде wxdraw2d( ) и не является частью команды wxdraw2d.

wxdraw2d(
    explicit(
        sin(x),
        x,1,10
    )
),wxplot_size=[1600,800]$

Установка размера встроенного графика с помощью параметра wxplot_size работает для встроенного графика при использовании команд wxplot, wxdraw, wxcontour_plot и wximplicit_plot, а также для встроенных анимаций при использовании команд with_slider_draw и wxanimate.

3.4.3 Better quality plots

По всей видимости в Gnuplot не реализован универсальный способ определения наличия поддержки вывода растрового изображения в улучшенном качестве, реализуемого библиотекой Cairo. В системах, где Gnuplot скомпилирован с поддержкой этой библиотеки, параметр pngCairo в меню настройки конфигурации (может быть переопределён переменной wxplot_pngcairo) включает поддержку сглаживания и дополнительные стили линий. Если включить параметр wxplot_pngCairo в системах без поддержки этой библиотеки в Gnuplot, то вместо графического изображения будут получены сообщения об ошибке.

3.4.4 Opening embedded plots in interactive Gnuplot windows

Если график был создан с помощью команд типа wxdraw (wxplot2d и wxplot3d в этой функции не поддерживаются) и размер файла основного проекта Gnuplot не слишком велик, то можно использовать контекстное меню wxMaxima, которое позволяет открыть график в интерактивном окне Gnuplot.

3.4.5 Opening Gnuplot’s command console in plot windows

В MS Windows существует две программы Gnuplot: gnuplot.exe и wgnuplot.exe. Выбрать ту из них, которая будет использоваться, можно в меню настройки конфигурации. При этом wgnuplot.exe позволяет открыть окно командной строки для ввода команд gnuplot, а gnuplot.exe такой возможности не предоставляет. К сожалению, wgnuplot.exe позволяет Gnuplot на некоторое время «захватывать» фокус клавиатуры каждый раз при подготовке графика.

3.4.6 Embedding animations into the spreadsheet

Трёхмерные графики затрудняют чтение количественных данных. В качестве возможной альтернативы можно назначить третий параметр колесу мыши. Команда with_slider_draw является версией команды wxdraw2d, позволяющей подготовить несколько графиков и переключаться между ними путём перемещения ползунка в верхней части экрана. WxMaxima позволяет экспортировать эту анимацию в виде анимированного файла gif.

Первые два аргумента команды with_slider_draw представляют собой имя переменной, значение которой пошагово изменяется в графиках, и список значений этой переменной. За ними следуют обычные аргументы для wxdraw2d:

with_slider_draw(
    f,[1,2,3,4,5,6,7,10],
    title=concat("f=",f,"Hz"),
    explicit(
        sin(2*%pi*f*x),
        x,0,1
    ),grid=true
);

Аналогичный функционал для трёхмерных графиков доступен при использовании команды with_slider_draw3d, которая позволяет вращать трёхмерные графики:

wxanimate_autoplay:true;
wxanimate_framerate:20;
with_slider_draw3d(
    α,makelist(i,i,1,360,3),
    title=sconcat("α=",α),
    surface_hide=true,
    contour=both,
    view=[60,α],
    explicit(
        sin(x)*sin(y),
        x,-π,π,
        y,-π,π
    )
)$

Если ключевым моментом является общая форма графика, то небольшого смещения графика может быть достаточно, чтобы сделать его трёхмерную природу интуитивно узнаваемой:

wxanimate_autoplay:true;
wxanimate_framerate:20;
with_slider_draw3d(
    t,makelist(i,i,0,2*π,.05*π),
    title=sconcat("α=",α),
    surface_hide=true,
    contour=both,
    view=[60,30+5*sin(t)],
    explicit(
        sin(x)*y^2,
        x,-2*π,2*π,
        y,-2*π,2
    )
)$

Для тех, кто лучше знаком с plot, чем с draw, имеется другой набор функций:

Обычно анимации воспроизводятся или экспортируются с частотой кадров, заданной в конфигурации wxMaxima. Для установки скорости воспроизведения отдельной анимации можно воспользоваться параметром wxanimate_framerate:

wxanimate(a, 10,
    sin(a*x), [x,-5,5]), wxanimate_framerate=6$

Функции анимации используют команду Maxima makelist и подвержены тем же недостаткам, в связи с которыми значение переменной ползунка подставляется в выражение только тогда, когда эта переменная непосредственно видима в выражении. Поэтому приведённый далее пример вызовет появление ошибки:

f:sin(a*x);
with_slider_draw(
    a,makelist(i/2,i,1,10),
    title=concat("a=",float(a)),
    grid=true,
    explicit(f,x,0,10)
)$

Если же отправить Maxima явный запрос на подстановку значения ползунка, построение графиков работает прекрасно:

f:sin(a*x);
with_slider_draw(
    b,makelist(i/2,i,1,10),
    title=concat("a=",float(b)),
    grid=true,
    explicit(
        subst(a=b,f),
        x,0,10
    )
)$

3.4.7 Opening multiple plots in contemporaneous windows

Эта функция Maxima (в системах, которые её поддерживают) не реализована в wxMaxima, но иногда может быть очень удобной. Следующий пример взят из письма, которое Mario Rodriguez отправил в рассылку Maxima:

load(draw);

/* Parabola in window #1 */
draw2d(terminal=[wxt,1],explicit(x^2,x,-1,1));

/* Parabola in window #2 */
draw2d(terminal=[wxt,2],explicit(x^2,x,-1,1));

/* Paraboloid in window #3 */
draw3d(terminal=[wxt,3],explicit(x^2+y^2,x,-1,1,y,-1,1));

Также возможно создание нескольких графиков в одном окне (то же самое возможно в командной строке Maxima при использовании стандартной команды draw()):

wxdraw(
  gr2d(
    key="sin (x)",grid=[2,2],
    explicit(sin(x),x,0,2*%pi)),
  gr2d(
    key="cos (x)",grid=[2,2],
    explicit(cos(x),x,0,2*%pi))
);

3.4.8 The “Plot using draw” side pane

Боковая панель «График с помощью Draw» работает как простой генератор кода, который позволяет создавать сцены, использующие гибкие возможности пакета draw, поставляемого с Maxima.

3.4.8.1 2D

Генерирует основную конструкцию команды draw(), которая рисует двухмерную сцену. Эту сцену далее необходимо заполнить командами, формирующими её наполнение, например, с помощью кнопок в строках под кнопкой «2D».

Одной из полезных функций кнопки «2D» является возможность задать сцену в виде анимации, где переменная (по умолчанию используется t) имеет разное значение в каждом кадре: часто бывает проще понять анимированный двухмерный график, чем те же самые данные в неподвижной трёхмерной сцене.

3.4.8.2 3D

Генерирует основную конструкцию команды draw(), которая рисует трёхмерную сцену. Если ни двухмерная, ни трёхмерная сцена не заданы, при нажатии всех остальных кнопок создаётся двухмерная сцена, содержащая генерируемую кнопкой команду.

3.4.8.3 Выражение

Добавляет стандартный график выражения, подобного sin(x), x*sin(x) или x^2+2*x-4, в команду draw(), в которой в данный момент находится курсор. Если команда draw отсутствует, то будет создана двухмерная сцена. Каждая сцена может быть заполнена любым количеством графиков.

3.4.8.4 Implicit plot

Пытается найти все точки, для которых истинны выражения, подобные y=sin(x), y*sin(x)=3 или x^2+y^2=4, и помещает итоговую кривую в команду draw(), в которой в данный момент находится курсор. Если команда draw отсутствует, то будет создана двухмерная сцена.

3.4.8.5 Parametric plot

Проводит переменную по шагам от нижнего до верхнего предела с использованием двух выражений, подобных t*sin(t) и t*cos(t), для генерации координат x, y (а в трёхмерных графиках ещё и z) для кривой, заданной в текущей команде draw.

3.4.8.6 Points

Рисует несколько точек, которые при необходимости можно соединить. Координаты точек берутся из списка списков, двухмерного массива, либо из одного списка или массива для каждой оси.

3.4.8.7 Diagram title

Рисует заголовок в верхней части диаграммы.

3.4.8.8 Axis

Задаёт ось.

3.4.8.9 Contour

(Только для трёхмерных графиков): добавляет отображение контурных линий, подобных изображаемым на картах гор, в команды создания графиков, которые следуют за текущей командой draw(), и/или на нижнюю плоскость графика. Данный мастер также позволяет полностью исключить начертание кривых, оставляя на графике только контуры.

3.4.8.10 Plot name

Добавляет запись с отображением имени следующего графика к легенде диаграммы. Пустое имя отключает формирование записей легенды для последующих графиков.

3.4.8.11 Line colour

Задаёт цвет линии для последующих графиков, содержащихся в составе текущей команды draw.

3.4.8.12 Fill colour

Задаёт цвет заливки для последующих графиков, передаваемых в составе команды draw.

3.4.8.13 Grid

Выводит мастер, позволяющий задать линии сетки.

3.4.8.14 Accuracy

Позволяет выбрать приемлемое значение компромисса между скоростью и точностью, являющегося неотъемлемой частью любой программы формирования графиков.

3.4.9 Modify font and font size for plots

Размер шрифта по умолчанию может оказаться слишком маленьким, особенно при использовании мониторов с высоким разрешением. Для команд на основе draw установка шрифта / размера шрифта выполняется с помощью таких параметров, как font=..., font_size=..., например:

wxdraw2d(
     font="Helvetica",
     font_size=30,
     explicit(sin(x),x,1,10));

Для команд построения диаграмм (например, wxplot2d, wxplot3d) размеры шрифтов и шрифты можно задавать с помощью команды gnuplot_preamble, например:

wxplot2d(sin(x),[x,1,10],
         [gnuplot_preamble, "set tics font \"Arial, 30\"; set xlabel font \",20\"; set ylabel font \",20\";"]);

Это позволяет установить Arial с размером 30 в качестве шрифта для чисел. Размер шрифта для xlabel и ylabel будет равен 20 (со шрифтом по умолчанию).

Изучите документацию Maxima и Gnuplot для получения более подробной информации. Примечание: известно о наличии у Gnuplot проблем с шрифтами большого размера, смотрите ошибку wxMaxima #1966.

3.5 Embedding graphics

При использовании формата файла .wxmx встраивание графики в проект wxMaxima выполняется простым перетаскиванием. Но иногда (например, если содержимое изображения может измениться позднее во время сеанса) лучше задать загрузку файла изображения после проведения вычислений:

show_image("man.png");

3.6 Startup files

В диалоге настройки wxMaxima можно внести изменения в два файла с командами, которые выполняются при запуске:

Например, если Gnuplot установлен в /opt (может быть в MacOS), в эти файлы можно добавитьgnuplot_command:"/opt/local/bin/gnuplot"$ (либо /opt/gnuplot/bin/gnuplot или любой другой путь).

Эти файлы находятся в каталоге пользователя Maxima (в Windows это обычно %USERPROFILE%/maxima, в других ОС — $HOME/.maxima). Местоположение можно выяснить с помощью команды: maxima_userdir;

3.7 Special variables wx…

3.8 Pretty-printing 2D output

Функция table_form() отображает двухмерный список в более удобочитаемой форме, нежели при стандартном выводе процедуры Maxima. Ввод осуществляется в виде списка, содержащего один или нескольких списков. Как и команда «print», данная команда отображает вывод, даже когда завершается символом доллара. Завершение команды символом точки с запятой приводит к выводу такой же таблицы вместе с сообщением «done».

table_form(
    [
        [1,2],
        [3,4]
    ]
)$

Согласно примеру, представленному ниже, списки, которые собираются командой table_form, могут создаваться до выполнения команды.

Третий пример таблицы

Также, поскольку матрица является списком списков, матрицы могут схожим образом преобразовываться в таблицы.

Другой пример table_form

The function wx_matrix() is a wrapper for Maxima’s matrix() command that allows for more flexible formatting of matrices in wxMaxima:

wx_matrix( <matrix>, [options] )

Example:

wx_matrix(matrix(["Name", "Value"], ["X", 10], ["Y", 20]),
          lines=true, rownames=true, colnames=true, parenstyle=square);

3.9 Bug reporting

WxMaxima предоставляет несколько функций, которые собирают информацию о текущей системе для формирования отчёта об ошибках:

3.10 Marking output being drawn in red

Команда Maxima box() вызывает вывод аргументов wxMaxima с выделением красным цветом, если второй аргумент команды представляет собой текст highlight.

3.11 Output rendering.

set_display() позволяет указать, как wxMaxima следует визуализировать вывод.

set_display('xml) — значение по умолчанию. Здесь Maxima обращается к wxMaxima с помощью (машиночитаемого) XML-диалекта (доступен для просмотра на боковой панели «Отслеживание необработанных XML-данных») и выводит получившиеся формулы в удобном для восприятия пользователем виде; например, матрицы, знаки квадратного корня, дроби и так далее.

set_display('ascii) causes wxMaxima to output formulas as in command line Maxima - as ASCII-Art.

set_display('none) — «однострочные» выходные данные ASCII — эта команда делает то же самое, что и команда display2d:false; командной строки Maxima.

4 Help menu

Меню справки wxMaxima предоставляет доступ к руководству, подсказкам и некоторым примерам рабочих листов Maxima и wxMaxima, а также к демонстрационным примерам в командной строке Maxima (команда demo()).

Обратите внимание на вывод демонстрационных примеров:

At the ’_’ prompt, type ’;’ and <enter> to proceed with the demonstration.

That is valid for command-line Maxima, however in wxMaxima by default it is necessary to continue the demonstration with: CTRL+ENTER

(That can be configured in the Configure->Worksheet->“Hotkeys for sending commands to Maxima” menu.)


5 Troubleshooting

5.1 Cannot connect to Maxima

Maxima (программа, которая фактически выполняет математические расчёты) и wxMaxima (предоставляет удобный интерфейс пользователя) — отдельные программы, которые обмениваются данными по локальной сети. Поэтому наиболее вероятной причиной проблемы могут быть сбои в работе соединения. Например, межсетевой экран может быть настроен таким образом, что не только предотвращает несанкционированные соединения, поступающие из сети Интернет (а возможно, и некоторые соединения в обратном направлении), но также блокирует взаимодействие между процессами на одном и том же компьютере. Поскольку Maxima работает на процессоре Lisp, блокируемые процессы не обязательно будут носить имя «maxima». Сетевые соединения обычно открывают программы sbcl, gcl, ccl, lisp.exe или подобные им.

На компьютерах с Unix другой возможной причиной может быть неправильная конфигурация закольцованной сети, обеспечивающей сетевое соединение между двумя программами на одном компьютере.

5.2 How to save data from a broken .wxmx file

Большинство современных форматов на основе XML представляют собой обычные zip-файлы. WxMaxima не использует функцию сжатия, поэтому содержимое файлов .wxmx можно просматривать в текстовом редакторе.

Если zip-сигнатура в конце файла осталась нетронутой после переименования повреждённого файла .wxmx в .zip, то большинство операционных систем смогут обеспечить извлечение любой части находящихся в нём данных. Это может быть сделано при необходимости восстановления исходных файлов изображений из текстового документа. И даже повреждение zip-сигнатуры не означает, что всё потеряно: если во время сохранения wxMaxima удалось определить, что что-то пошло не так, появится файл .wxmx~, содержимое которого может оказаться полезным.

And even if there isn’t such a file: The .wxmx file is a container format and the XML portion is stored uncompressed. It it is possible to rename the .wxmx file to a .txt file and to use a text editor to recover the XML portion of the file’s contents (it starts with <?xml version="1.0" encoding="UTF-8"?> and ends with </wxMaximaDocument>. Before and after that text you will see some unreadable binary contents in the text editor).

Если извлечь это содержимое (например, скопировать и вставить этот текст в новый файл) и сохранить полученный текстовый файл с расширением .xml, то wxMaxima сможет восстановить текст из этого документа.

5.3 I want some debug info to be displayed on the screen before my command has finished

Обычно wxMaxima начинает вёрстку только после полной передачи двухмерной формулы. Это сделано, чтобы не тратить время на выполнение нескольких попыток вёрстки частично завершённого уравнения. Тем не менее, существует команда disp, которая обеспечивает незамедлительный вывод отладочной информации без ожидания завершения выполнения текущей команды Maxima:

for i:1 thru 10 do (
   disp(i),
   /* (sleep n) is a Lisp function, which can be used */
   /* with the character "?" before. It delays the */
   /* program execution (here: for 3 seconds) */
   ?sleep(3)
)$

Альтернативный вариант — воспользоваться командой wxstatusbar() (её описание приводилось выше).

5.4 Plotting only shows a closed empty envelope with an error message

Это означает, что wxMaxima не удалось прочитать файл, который должен был быть создан Gnuplot по инструкции от Maxima.

Возможные причины ошибки:

5.5 Plotting an animation results in “error: undefined variable”

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

5.6 I lost cell content and undo doesn’t remember

Операции с полями и действия по изменению их содержимого имеют свои отдельные функции отмены. Поэтому возникновение такой ситуации крайне маловероятно. Если же это случилось, то имеется несколько способов восстановления данных:

playback();

5.7 WxMaxima starts up with the message “Maxima process terminated.”

Одна из возможных причин — Maxima не удалось найти в расположении, которое задано на вкладке «Maxima» диалогового окна параметров конфигурации wxMaxima, и поэтому программа не может запуститься в принципе. Проблема решается указанием пути к рабочему исполняемому файлу Maxima.

5.8 Maxima is forever calculating and not responding to input

Теоретически возможно, что wxMaxima не распознаёт, что Maxima уже завершила вычисление, и поэтому не получает уведомление о том, что пора отправлять новые данные для Maxima. Если дело в этом, то “Trigger evaluation” может помочь повторно синхронизировать эти две программы.

5.9 My SBCL-based Maxima runs out of memory

Компилятор Lisp SBCL по умолчанию поставляется с ограничением памяти, которое позволяет ему работать даже на очень слабых компьютерах. В процессе компиляции такого большого программного пакета, как Lapack, или при работе с огромными списками уравнений этот лимит может оказаться слишком низким. Для увеличения лимита SBCL можно запустить с параметром командной строки --dynamic-space-size, который указывает SBCL сколько мегабайт нужно зарезервировать. SBCL для 32-разрядной версии Windows может зарезервировать до 999 мегабайт. 64-разрядная версия SBCL для Windows позволяет зарезервировать более 1280 мегабайт, необходимых для компилирования Lapack.

Один из способов указать параметры командной строки для Maxima (а значит, и для SBCL) — использовать поле «Дополнительные параметры команды Maxima» в диалоговом окне настройки параметров конфигурации wxMaxima.

Память sbcl

5.10 Input sometimes is sluggish/ignoring keys on Ubuntu

Установка пакета ibus-gtk должна решить этот вопрос. Более подробную информацию смотрите по адресу (https://bugs.launchpad.net/ubuntu/+source/wxwidgets3.0/+bug/1421558).

5.11 WxMaxima halts when Maxima processes Greek characters or Umlauts

Если используемая версия Maxima основана на SBCL, то в .sbclrc необходимо добавить следующие строки:

(setf sb-impl::*default-external-format* :utf-8)

Папка, в которой размещается этот файл, зависит от конкретной системы и установки. Но любая версия Maxima на основе SBCL, в которой в текущем сеансе уже производилось вычисление поля, всегда укажет его местонахождение после получения следующей команды:

:lisp (sb-impl::userinit-pathname)

5.12 Note concerning Wayland (recent Linux/BSD distributions)

Возможны проблемы с работой протокола графического сервера Wayland и wxWidgets. Это может затронуть wxMaxima (например, будет невозможно перемещать боковые панели).

Можно либо отключить Wayland и использовать вместо этой подсистемы X11 (глобально), либо просто указать, что wxMaxima должна использовать X Window System, установкой параметра: GDK_BACKEND=x11

Например, запустить wxMaxima с параметром:

GDK_BACKEND=x11 wxmaxima

5.13 The menu bar disappears on KDE Plasma

On some KDE Plasma installations the global menu bar disappears when clicked. As this is a bug in the global menu proxy, the only way to avoid it is to tell that wxMaxima should use its own menu bar instead of the global one. This is done by setting: UBUNTU_MENUPROXY=0

Starting with version 26.05.0, wxMaxima attempts to set this variable automatically if it detects an affected system (KDE, Unity, or Ubuntu with older wxWidgets versions).

If the automatic fix fails, you can manually start wxMaxima with:

UBUNTU_MENUPROXY=0 wxmaxima

5.14 Why is the integrated manual browser not offered on my Windows PC?

Либо компиляция wxWidgets была выполнена без поддержки webview2 от Microsoft, либо компонент webview2 от Microsoft не был установлен.

5.15 Why is the external manual browser not working on my Linux box?

Браузер HTML может быть реализован в виде версии пакета snap, flatpack или appimage. Все они обычно не имеют доступа к файлам, установленным локально в системе. Другая причина может заключаться в том, что Maxima или wxMaxima установлена в виде версии пакета snap, flatpack или ещё чего-то, что не предоставляет доступа к содержимому операционной системы. Третьей причиной может быть то, что HTML-руководство maxima не установлено локально, а получить доступ к онлайн-руководству не получается.

5.16 Can I make wxMaxima output both image files and embedded plots at once?

В рабочий лист встраиваются .png-файлы. WxMaxima позволяет пользователю указать, где они должны генерироваться:

wxdraw2d(
    file_name="test",  /* extension .png automatically added */
    explicit(sin(x),x,1,10)
);

Если необходимо использовать другой формат, то проще сначала сгенерировать изображения, а затем снова импортировать их в рабочий лист:

load("draw");
pngdraw(name,[contents]):=
(
    draw(
        append(
            [
                terminal=pngcairo,
                dimensions=wxplot_size,
                file_name=name
            ],
            contents
        )
    ),
    show_image(printf(false,"~a.png",name))
);
pngdraw2d(name,[contents]):=
    pngdraw(name,gr2d(contents));

pngdraw2d("Test",
        explicit(sin(x),x,1,10)
);

5.17 Can I set the aspect ratio of an embedded plot?

С помощью переменной wxplot_size:

wxdraw2d(
    explicit(sin(x),x,1,10)
),wxplot_size=[1000,1000];

5.18 After upgrading to MacOS 13.1 plot and/or draw commands output error messages like

1 HIToolbox 0x00007ff80cd91726 _ZN15MenuBarInstance22EnsureAutoShowObserverEv + 102
2 HIToolbox 0x00007ff80cd912b8 _ZN15MenuBarInstance14EnableAutoShowEv + 52
3 HIToolbox 0x00007ff80cd35908 SetMenuBarObscured + 408
...

This might be an issue with the operating system. Disable the hiding of the menu bar (SystemSettings => Desktop & Dock => Menu Bar) might solve the issue. See wxMaxima issue #1746 for more information.

5.19 Logging

Log messages might be helpful to debug problems. WxMaxima can log many events. Most log entries will be helpful for developers, especially in case of problems or bugs. If you run a “Release”-Build, the log windows is not shown by default, if you run a development version, it is shown by default as a second window. You can enable and disable this window using the “View->Toggle log window” menu entry.

Сообщения не «теряются»; если окно журнала не показано, то при последующем включении его отображения будут доступны для просмотра также и прошлые сообщения журнала (если они не были очищены пользователем).

Такие сообщения могут быть полезны при создании отчётов об ошибках (или при самостоятельном поиске ошибок).

Сообщения журнала можно (дополнительно) выводить в STDERR с помощью параметра командной строки «–logtostderr». В Windows будет открыта отдельная текстовая консоль, так как у приложения Windows с графическим интерфейсом пользователя не подключён стандартный ввод/вывод.


6 FAQ

6.1 Is there a way to make more text fit on a LaTeX page?

Да. Можно использовать пакет LaTeX «geometry», который позволяет указать размеры границ.

You can add the following line to the LaTeX preamble (for example by using the respective field in the config dialogue (“Export”->“Additional lines for the TeX preamble”), to set borders of 1cm):

\usepackage[left=1cm,right=1cm,top=1cm,bottom=1cm]{geometry}

6.2 Is there a dark mode?

Если версия wxWidgets достаточно свежая, то wxMaxima автоматически использует тёмную тему, когда вся остальная операционная система настроена на работу в ней. Сам по себе рабочий лист по умолчанию оснащён светлым фоном, но можно установить тёмный. Кроме того, имеется пункт меню «Вид/Инвертировать яркость рабочего листа», позволяющий быстро преобразовывать рабочий лист из тёмного в светлый и обратно.

6.3 WxMaxima sometimes hangs for several seconds once in the first minute

WxMaxima delegates some big tasks like parsing Maxima’s >1000-page-manual to background tasks, which normally goes totally unnoticed. At the moment the result of such a task is needed, though, it is possible that wxMaxima needs to wait a couple of seconds before it can continue its work.

6.4 Especially when testing new locale settings, a message box “locale ’xx_YY’ can not be set” occurs

Предупреждение локали

(Та же ошибка может возникать и с другими приложениями). После нажатия кнопки «ОК» никаких проблем с переводом не обнаруживается. WxMaxima использует не только свои собственные переводы, но и переводы платформы wxWidgets.

Указанные локали могут отсутствовать в системе. В системах Ubuntu/Debian их можно сгенерировать с помощью команды dpkg-reconfigure locales

6.5 How can I use symbols for real numbers, natural numbers (ℝ, ℕ), etc.?

Эти символы доступны на боковой панели «Юникод» (выполните поиск по ’double-struck capital’). Но такие символы должен поддерживать и выбранный шрифт. Выберите другой шрифт, если символы отображаются неправильно.

6.6 How can a Maxima script determine, if it is running under wxMaxima or command line Maxima?

Если используется wxMaxima, то переменная Maxima maxima_frontend установлена в значение wxmaxima. Переменная Maxima maxima_frontend_version в этом случае содержит версию wxMaxima.

Если графический интерфейс не используется (работа выполняется в командной строке Maxima), то эти переменные имеют значение false.

6.7 Help! I can not save my document!

If saving as wxmx file does not work, try saving the document as wxm file (and vice versa). And you can also try to remove all output (Menu Cell->Remove all output) and save that file, maybe some unexpected output causes issues during the save process.


7 Command-line arguments

Обычно программы с графическим интерфейсом пользователя можно запускать простым щелчком по значку на рабочем столе или пункту меню рабочего стола. Тем не менее, wxMaxima — при запуске из командной строки — позволяет использовать некоторые аргументы командной строки.

Вместо минуса в некоторых операционных системах перед ключами командной строки может использоваться тире.


8 About the program, contributing to wxMaxima

wxMaxima написана большей частью на языке программирования C++ с использованием платформы wxWidgets, в качестве системы сборки используется CMake, небольшая часть написана на Lisp. Можно принять участие в разработке wxMaxima. Для этого необходимо присоединиться к проекту wxMaxima на https://github.com/wxMaxima-developers/wxmaxima при наличии навыков программирования на этих языках и желании внести вклад в разработку проекта wxMaxima с открытым исходным кодом.

Но требуются не только программисты! Внести вклад в разработку wxMaxima можно также путём улучшения документации, поиска ошибок и отправки соответствующих отчётов (а также, возможно, исправлений), предложения новых функциональных возможностей, помощи с переводом интерфейса или документации wxMaxima на другие языки (для получения информации о порядке перевода интерфейса и документации wxMaxima изучите файл README.md в подкаталоге локализации).

Также можно отвечать на вопросы других пользователей на дискуссионном форуме.

Исходный код wxMaxima документирован с помощью Doxygen здесь.

Программа практически полностью автономна, поэтому — за исключением системных библиотек (и библиотеки wxWidgets) — для её работы не требуется внешних зависимостей (например, графических файлов или части на языке Lisp (файл wxmathML.lisp); эти файлы включены в исполняемый файл).

If you are a developer, you might want to try out a modified wxmathML.lisp-file without recompiling everything, one can use the command line option --wxmathml-lisp=<str> to use another Lisp file, not the included one.