Grundsätzlich gibt es keine Möglichkeit, Mathematica-Notizbücher in PDF-Dateien zu konvertieren, ohne das Frontend aufzurufen. Um es zu drucken oder zu konvertieren, müssen Sie es zuerst öffnen, und ein naiver Versuch, ein Notizbuch über die Mathematica-Befehlszeile zu öffnen, führt zu dem Fehler FrontEndObject :: notavail
In[1]:= NotebookOpen["file.nb"] FrontEndObject::notavail: A front end is not available; certain operations require a front end.
Das bedeutet, dass Sie entweder ein Notebook für die Konvertierung erstellen oder das Frontend von der Befehlszeile aus aufrufen können. Hier ist eine Lösung in Form eines Mathematica-Skripts - es kann leicht in eine Notebook- oder Paketdatei umgewandelt werden.
Speichern Sie den folgenden Code als nb2pdf
, machen Sie ihn ausführbar und platzieren Sie das Verzeichnis mit den Dateien, die Sie konvertieren möchten, oder irgendwo in Ihrem Pfad.
#!/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], ]]