Как оценить записную книжку из командной строки?

Как мы можем оценить записную книжку Mathematica из командной строки (т.е. при запуске ядра в режиме командной строки)?

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


Вот что у меня есть на данный момент:

Во-первых, нам нужно запустить автономный X-сервер на удаленной машине Linux, чтобы клиентский интерфейс мог работать там (и открывать ноутбук). Пропустите этот шаг, если вы работаете на локальном компьютере.

Xvfb :1 &
export DISPLAY=:1

После этого я запустил ядро ​​Mathematica ( math ) и сделал следующее.

Необходимо использовать UsingFrontEnd , потому что для открытия записной книжки требуется внешний интерфейс. test.nb имеет единственную входную ячейку, содержащую a = 1 .

In[1]:= nb=UsingFrontEnd@NotebookOpen["test.nb"]

Out[1]= -NotebookObject-

После попытки оценить записную книжку, по-видимому, я получаю диалоговое окно , и мне нужно использовать Return [] , чтобы вернуться. Я не уверен, почему строка ввода снова начинает отсчет с 1 (новое ядро ​​было запущено внешним интерфейсом?) Обратите внимание, что a не получил значения.

In[2]:= UsingFrontEnd@NotebookEvaluate[nb]

 In[1]:= a

 Out[1]= a

 In[2]:= Return[]

Out[2]= a

После возврата из диалогового окна a по-прежнему не имеет значения.

In[3]:= a

Out[3]= a

19
задан Szabolcs 28 December 2011 в 14:43
поделиться