Конвертировать Mathematica в PDF через командную строку

2570
Martin Ueding

Я нахожусь на Linux и хотел бы преобразовать кучу Mathematica 8 Notebooks в PDF.

Есть ли способ конвертировать их в командной строке? Я хотел бы написать правило make-файла для преобразования, чтобы я мог конвертировать многие из них.

3

1 ответ на вопрос

5
Simon

По сути, нет способа конвертировать блокноты Mathematica в PDF-файлы без использования внешнего интерфейса. Чтобы распечатать или преобразовать его, сначала нужно открыть его, и наивная попытка открыть записную книжку из командной строки Mathematica выдает ошибку FrontEndObject :: notavail

In[1]:= NotebookOpen["file.nb"]  FrontEndObject::notavail:  A front end is not available; certain operations require a front end. 

Это означает, что вы можете сделать блокнот для преобразования или вызвать веб-интерфейс из командной строки. Вот решение в виде скрипта Mathematica - его легко превратить в файл Notebook или пакет.

Сохраните следующий код как nb2pdf, сделайте его исполняемым и поместите его в каталог с файлами, которые вы хотите преобразовать, или где-нибудь по вашему пути.

#!/usr/local/bin/MathematicaScript -script  (* Convert Mathematica notebooks to PDFs *) (* usage: nb2pdf file1.nb file2.nb etc... *) (* outputs: file1.pdf file2.pdf etc... into the current directoy *) (* If called with no filenames, this script *) (* will convert all notebook files in the current directory *)  dir = Directory[]; files = {}; expandNb = False; (* Expand all cell groups in the Notebook *)  If[Length[$ScriptCommandLine] > 1,  Do[If[FileExistsQ[file],  AppendTo[files, file],  Print["File " <> file <> " does not exist"]], ], files = FileNames["*.nb"]];  With[, Do[nb = UFE@NotebookOpen[FileNameJoin[]]; If[expandNb, UFE@SelectionMove[nb, All, Notebook];  UFE@FrontEndExecute[FrontEndToken["SelectionOpenAllGroups"]]]; UFE@NotebookPrint[nb, FileNameJoin[]]; UFE@NotebookClose[nb], ]] 
Это выглядит многообещающе. Я попробовал, но я получил `error: 8: Exec format error '. Есть идеи, что это может значить? Martin Ueding 12 лет назад 0
@queueoverflow: я не видел этой ошибки раньше. Работают ли какие-либо сценарии Mathematica для вас? Попробуйте этот [сценарий "Привет мир"] (http://mathematica.stackexchange.com/q/648/34). Или же скрипт nb2pdf просто не работает на некоторых файлах? Simon 12 лет назад 0
Точно такая же ошибка с двухстрочным сценарием Hello World ... Martin Ueding 12 лет назад 0
@queueoverflow: хорошо, попробуйте запустить программу "hello world", используя `math -script hello`, если это не сработает, удалите строку shebang (#!) и попробуйте снова. Simon 12 лет назад 0
`math -script ~ / bin / nb2pdf filename` сейчас работает для меня. Спасибо за сценарий! Martin Ueding 12 лет назад 0
Могу ли я использовать ваш скрипт в проекте с открытым исходным кодом? Martin Ueding 12 лет назад 0
@queueoverflow: Конечно. Вам даже не нужно указывать источник кода, если вы этого не хотите. Simon 12 лет назад 0

Похожие вопросы