2010-02-25 28 views
6

Mathematica ofrece el paquete de notación para definir la notación personalizada, y parece funcionar muy bien hasta que guarde un cuaderno con notación personalizada como un paquete y trate de usar Needs["..."] para importar la nueva notación. Como se documenta en el Mathematica mailing list, esto causa errores de sintaxis extraños al evaluar cualquier llamada al Notation[]. La solución sugerida es abrir manualmente el bloc de notas y evaluarlo en el kernel, pero esto es una molestia para los archivos que planeo distribuir. Si alguien tiene una mejor solución para el problema, ¡realmente agradecería la ayuda!Formas de solucionar el error de notación de Mathematica?

+0

¿Puede elaborar con un ejemplo de archivo .m y los errores que está viendo, por favor? –

+1

Absolutamente. El paquete está disponible en mi sitio personal (http://www.cgranade.com/academics/mathematica-packages). El intento de incluir este paquete a través de 'necesita []' causas: sintaxis :: sntx: sintaxis no válida en o antes "notación [NotationTemplateTag [SubscriptBox [\ [Sigma], TemplateBox [{} n_, NotationPatternTag]]] <<71> > TemplateBox [{n_}, NotationPatternTag],]}]]]; > ^ –

Respuesta

3

Creo que su problema radica en la forma en que trata a Mathematica Notation[], quote:

Al definir sus propias anotaciones es críticamente importante utilizar las plantillas notación. El motivo de esta restricción es que las plantillas pegadas en un bloc de notas contienen cuadros de etiquetas esenciales incrustados en el manera correcta.

Puede que no sea posible en absoluto para tener una llamada archivo de paquete Notation[], pero hay una sugerencia de utilizar ParsedBoxWrapper que yo no tengo tiempo para jugar con este momento.

Hay una solución kludgy para su problema, que consiste en poner todas las asignaciones Notation[] en una celda del Notebook y convertirla en una celda de inicialización (haga clic con el botón derecho en el borde de la celda -> Initalization Cell). Por cierto, esto también creará un archivo .m con solo el contenido de esa celda (pero este archivo, por desgracia, no funcionará con Needs[] o <<). Después de eso, puedes colapsar la celda, hacer que no sea editable, no se pueda elongar y ¡listo! Casi como lo que quieres.

Debo observar que desde un punto de vista de distribución este kludge es bastante bueno ya que el archivo .m se regenera cada vez que carga el archivo principal, por lo que no necesita enviar varios archivos. El único inconveniente es un portátil ligeramente feo (es decir, una celda oculta) y una ventana emergente que le pregunta si desea evaluar las celdas de inicialización del portátil cada vez que evalúa por primera vez algo en ese portátil.

+0

Eso es un buen trabajo, salvo que tengo que asegurarme de recordar mantener la celda oculta al día. ¡tú! –

Cuestiones relacionadas