Convertir Mathematica a PDF a través de la línea de comandos

imagenes

Estoy en Linux y me gustaría convertir un montón de cuadernos Mathematica 8 a PDF.

¿Hay alguna forma de convertirlos en la línea de comandos? Me gustaría escribir una regla de makefile para la conversión, para poder convertir por lotes muchos de ellos.


Tenemos varias respuestas

La mejor respuesta:

Básicamente, no hay forma de convertir los cuadernos de Mathematica en PDF sin invocar la interfaz. Para imprimirlo o convertirlo, primero debe abrirlo y
un ingenuo intento de abrir un cuaderno desde el Línea de comandos de mathematica produce el error FrontEndObject :: notavail

En [1]: = NotebookOpen ["file.nb"]

FrontEndObject :: notavail: 
   Un extremo delantero no está disponible; ciertas operaciones requieren un extremo delantero.

Esto significa que puede hacer un cuaderno para hacer la conversión o llamar a la interfaz desde la línea de comandos. Aquí hay una solución en forma de Guion de matematica – Se puede convertir fácilmente en un archivo de Notebook o paquete.

Guarde el siguiente código como nb2pdf, conviértalo en ejecutable y colóquelo en el directorio con los archivos que desea convertir o en algún lugar de su ruta.

#! / usr / local / bin / MathematicaScript -script

(* Convertir cuadernos de Mathematica a PDFs *)
(* uso: nb2pdf archivo1.nb archivo2.nb, etc ... *)
(* salidas: archivo1.pdf archivo2.pdf, etc. en el directorio actual *)
(* Si se llama sin nombre de archivo, este script *)
(* convertirá todos los archivos del cuaderno en el directorio actual *)

dir = Directorio [];
archivos = {};
expandNb = Falso; (* Expandir todos los grupos de celdas en el Cuaderno *)

Si [Length [$ ScriptCommandLine] > 1, 
  Haga [Si [FileExistsQ [archivo], 
    AppendTo [archivos, archivo], 
    Imprimir archivo " <> expediente <> " no existe"]],
    {archivo, Rest [$ ScriptCommandLine]}],
  files = FileNames ["*. nb"]];

Con [{UFE = UsingFrontEnd},
 Haz [nb = UFE @ NotebookOpen [FileNameJoin [{dir, file}]];
  Si [expandNb, UFE @ SelectionMove [nb, All, Notebook]; 
               UFE @ FrontEndExecute [FrontEndToken ["SelectionOpenAllGroups"]]];
  UFE @ NotebookPrint [nb, FileNameJoin [{dir, FileBaseName [file]<>".pdf"}]];
  UFE @ NotebookClose [nb], {archivo, archivos}]]

Otra respuesta


Fuente

Leave a Reply