Meditor XML-Export: Unterschied zwischen den Versionen

Aus Physik
Zur Navigation springen Zur Suche springen
 
(41 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 10: Zeile 10:
 
** Menüpunkt "Export as..." mit "Speichern unter" Dialog
 
** Menüpunkt "Export as..." mit "Speichern unter" Dialog
 
** Menüpunkt "Export" welcher die Einstellungen aus der Preference Page nimmt
 
** Menüpunkt "Export" welcher die Einstellungen aus der Preference Page nimmt
  +
** Export-Dialog mit jenen Daten, die sich am ehesten von File zu File ändern.
  +
*** Speichern der getroffenen Einstellungen, sodass beim Export eines Files die Einstellungen vom letzten Export dieses Files geladen werden.
 
* Konfiguration über XML-File
 
* Konfiguration über XML-File
 
* Erzeugen eines XML-Files <br> enthält:
 
* Erzeugen eines XML-Files <br> enthält:
  +
** Metadaten
 
** Partitionierung
 
** Partitionierung
 
** Den Originalcode
 
** Den Originalcode
Zeile 18: Zeile 21:
 
* Transformation allgemein
 
* Transformation allgemein
 
** Java-Funktionalität zum Transformieren (in beliebiges Format)
 
** Java-Funktionalität zum Transformieren (in beliebiges Format)
** Transformation in HTML
+
* Transformation in HTML
*** XSL File
+
** XSL File
*** php-Skript für serverseitige Transformation
+
** php-Skript für serverseitige Transformation
*** Java-Funktion um gleich ein html-File zu exportieren
+
** Java-Funktion um gleich ein html-File zu exportieren
** Transformation in LaTeX
+
* Transformation in LaTeX
*** XSL File und LaTeX Template
+
** XSL File und LaTeX Template
*** Java-Funktionalität um gleich ein tex-File zu exportieren
+
** Java-Funktionalität um gleich ein tex-File zu exportieren
  +
** Nur LaTeX Kern ausgeben möglich (alles was sonst innerhalb der <tt>document</tt> Umgebung steht)
** Transformation in PDF (aus tex-File)
 
  +
* Transformation in PDF (aus tex-File)
 
* Preference Page für den Export
 
* Preference Page für den Export
 
** Einstellungen für:
 
** Einstellungen für:
 
*** Speicherort
 
*** Speicherort
*** Ausgabeformate (XML, HTML, LaTeX, PDF)
+
*** Ausgabeformate (XML, HTML, LaTeX (nur Kern oder alles), PDF)
  +
*** Metadaten
  +
*** Export-Dialog anzeigen
  +
*** Zu verwendende XSLT Files
  +
* Nur Variablen liefern
  +
* Nur Funktionen liefern
   
 
=== Beispieldokument ===
 
=== Beispieldokument ===
Das html-Ergebnis kann '''[http://itp.tugraz.at/Proj/MLTutor/xml_export/short.html hier]''' betrachtet werden.
+
Den XML-Output gibt's '''[http://itp.tugraz.at/Proj/MLTutor/xml_export/short.xml hier]'''.
   
  +
Folgende Transformationsergebnisse kann man sich anschauen:
Den XML-Output gibt's '''[http://itp.tugraz.at/Proj/MLTutor/xml_export/short.xml da]'''.
 
  +
{| style="border-spacing: 0.5em;"
 
  +
|-
Für die LaTeX Ausgabe kann man sich das '''[http://itp.tugraz.at/Proj/MLTutor/xml_export/short.tex tex]''' und das '''[http://itp.tugraz.at/Proj/MLTutor/xml_export/short.dvi dvi]''' File ansehen.
 
  +
| &nbsp; || HTML || LaTeX || PDF
  +
|-
  +
| Mit Zeilennummern
  +
| [http://itp.tugraz.at/Proj/MLTutor/xml_export/short_lines.html Link]
  +
| [http://itp.tugraz.at/Proj/MLTutor/xml_export/short_lines.tex Link]
  +
| [http://itp.tugraz.at/Proj/MLTutor/xml_export/short_lines.pdf Link]
  +
|-
  +
| Ohne Zeilennummern
  +
| [http://itp.tugraz.at/Proj/MLTutor/xml_export/short_nolines.html Link]
  +
| [http://itp.tugraz.at/Proj/MLTutor/xml_export/short_nolines.tex Link]
  +
| [http://itp.tugraz.at/Proj/MLTutor/xml_export/short_nolines.pdf Link]
  +
|}
  +
(Alle weiteren nötigen Files sind auch dort zu finden)
   
 
'''<tt>short.m</tt>''':
 
'''<tt>short.m</tt>''':
 
% ==Einfaches Testbeispiel==
 
% ==Einfaches Testbeispiel==
% ===Der Code===
+
% ===Der Code===
 
 
ex = [0:5] % dies ist der laufindex
 
ex = [0:5] % dies ist der laufindex
 
for ind=1:10
 
for ind=1:10
 
sin(ind)
 
sin(ind)
ind.^ex
+
erg(ind,:)=ind.^ex
 
end
 
end
disp('fertig');
+
disp('fertig');
  +
  +
% === Doppelbedeutung von 'end' ===
  +
for ind=1:10
  +
disp(num2str(erg(ind:end,1)));
  +
end
  +
  +
% ===Latex Problemzeichen===
  +
str_arr = {'knock knock', 'who is it'};
  +
eqsys = [1,4;2,3];
  +
y = [5;6];
  +
x = eqsys \ y
  +
eqsys = 0; y=0;
 
 
 
% ===Formatierungstests===
 
% ===Formatierungstests===
Zeile 54: Zeile 87:
 
%%
 
%%
 
%% neue zeile
 
%% neue zeile
  +
%%
% ====Ueberschrift3====
 
 
%% <nowiki>und auch <tt>variablen</tt> gibts hier</nowiki>
 
%% <nowiki>und auch <tt>variablen</tt> gibts hier</nowiki>
 
%%
 
%%
Zeile 60: Zeile 93:
 
%% und Formeln:
 
%% und Formeln:
 
%% $$a=\int_0^1 x^2 dx$$
 
%% $$a=\int_0^1 x^2 dx$$
  +
%%
  +
%* hallo Echo!
  +
%* hallo Listeneintrag!
  +
%# ich kann mehr,
  +
%# ich bin eine Aufzaehlung
  +
%# und was fuer eine!
  +
%%
  +
%# ich bin auch eine, aber noch klein
  +
  +
dies = eine; %% unangenehme Sache!
  +
  +
% ====verschiedene Leerzeilen====
  +
  +
%%
  +
  +
%%
  +
%%
  +
  +
oben = 1 % Leerzeile
  +
unten = 2 % Leerzeilen
  +
  +
  +
%%
  +
%% Text nach Markup-Leerzeile
  +
  +
%% Text nach codebox
   
 
'''Änderungen:'''
 
'''Änderungen:'''
  +
:Beispieldokument und XML-Format umfassend geändert (Zeilennummern, Listen) --[[User:Osiris|Osiris]] 14:47, 26 December 2006 (CET)
  +
:Beispieldokument erweitert (Doppelbedeutung von <tt>end</tt>), XML-Format erweitert (Metadaten) --[[User:Osiris|Osiris]] 10:02, 30 October 2006 (CET)
  +
:Beispieldokument erweitert und den Rest aktualisiert --[[User:Osiris|Osiris]] 13:48, 4 June 2006 (CEST)
  +
:Änderung des XML-Formats und Erweiterung (Metadaten - Autor) --[[User:Osiris|Osiris]] 12:32, 4 June 2006 (CEST)
 
:Kleine Änderung bei den Gleichungen und der Formatierung des XML-Files --[[User:Osiris|Osiris]] 18:32, 16 May 2006 (CEST)
 
:Kleine Änderung bei den Gleichungen und der Formatierung des XML-Files --[[User:Osiris|Osiris]] 18:32, 16 May 2006 (CEST)
   
 
== Was fehlt / Ideen==
 
== Was fehlt / Ideen==
  +
* Allgemein:
  +
** Welche Metadaten kommen ins HTML & PDF
  +
* Markupsprache
  +
** verborgener Text
  +
** Platzhalter in Links
 
* Im XML-Format:
 
* Im XML-Format:
** Tags für Metadaten
+
** Tags für Metadaten: so lassen oder alles dcmi (siehe weiter unten)
*** Filename
 
*** Autor ???
 
*** ???
 
:<span style="color:#00AA00">'''Wie wärs mit [http://dublincore.org/documents/dcmi-terms/ http://dublincore.org/documents/dcmi-terms/]?'''</span>
 
::Ist das eine bekannte/verbreitete Nomenklatur? --[[User:Osiris|Osiris]] 15:39, 6 April 2006 (CEST)
 
:::Open Document Format / RSS. Siehe [http://de.wikipedia.org/wiki/Dublin_Core] --[[User:Camhy|Camhy]] 20:48, 9 April 2006 (CEST)
 
 
* Im erzeugten HTML-File:
 
* Im erzeugten HTML-File:
 
** Link zum .m-File
 
** Link zum .m-File
  +
* LaTeX Ausgabe:
** Zeilennummern ???
 
  +
** In <tt>shorts.tex</tt> stehen Daten zum Autor und so drinnen, dies vernünftig managen.
* Funktionalität der Klassen
 
  +
* Preference Page für den Export fertigstellen
** Nur Funktionen liefern
 
** Nur Variablen liefern
 
* Preference Page für den Export
 
 
** Einstellungen für:
 
** Einstellungen für:
*** Autor
 
 
*** Was kommt in den Header
 
*** Was kommt in den Header
* Ausgabe in LaTeX / PDF
 
** Lösung des <tt>commandchars</tt>-Problems
 
*** Entweder einen anderen Satz von cc's zum Laufen bringen (derzeit '\' '{' '}', also Latex-Standard)
 
*** Wenn obiges nicht funktioniert, diese Chars escapen.
 
**** Geht nicht mit XSL, da keine Schleifen möglich sind -> Lösung in Java nötig, damit wäre aber für eine Transformation das XML-File mit dem Transformationsfile nicht mehr ausreichend.
 
 
* Verbindung mit der Matlab-Konsole
 
* Verbindung mit der Matlab-Konsole
 
** Matlab-Ausgaben sollen angezeigt werden können
 
** Matlab-Ausgaben sollen angezeigt werden können
Zeile 150: Zeile 204:
   
 
<span style="color: green;">Letzteres funktioniert (in html mit png-Bildchen)</span>
 
<span style="color: green;">Letzteres funktioniert (in html mit png-Bildchen)</span>
  +
  +
<hr style="width:90%; background-color:black; height:2px; margin-left:5%; margin-bottom:20px;">
  +
  +
'''Listen''' (nicht nummeriert) und '''Aufzählungen''' (nummerierte Listen)
  +
  +
Definition einer Liste:
  +
%* Der erste Punkt
  +
%* Ein weiterer
  +
%* usw.
  +
  +
Definition einer Aufzählung:
  +
%# Der erste Punkt
  +
%# Ein weiterer
  +
%# usw.
  +
  +
Bei beiden ist eine tiefere Verschachtelung nicht möglich. Bei den Aufzählungen erfolgt eine durchgehende Nummerierung nur innerhalb eines Blocks direkt aufeinanderfolgender Elemente. (Auch ein eingestreutes Listenelement oder eine Leerzeile sind eine Unterbrechung!)
  +
  +
<span style="color: green;">Funktioniert</span>
   
 
<hr style="width:90%; background-color:black; height:2px; margin-left:5%; margin-bottom:20px;">
 
<hr style="width:90%; background-color:black; height:2px; margin-left:5%; margin-bottom:20px;">
Zeile 155: Zeile 227:
 
'''Matlab-Ausgaben'''
 
'''Matlab-Ausgaben'''
   
1. Variante: Den Wert von <tt>x</tt> ausgeben lassen mit z.B.:
+
1. Variante: Den Wert von <tt>x</tt> ausgeben lassen:
  +
%var x cols=4 rows=4 format=%4.2f novarname
%#x
 
  +
Dabei muss nach dem <tt>%var</tt> der Variablenname angeführt werden, die weiteren Parameter sind optional und ihre Reihenfolge ist irrelevant. Die <tt>=</tt> dürfen nicht von Leerzeichen gesäumt sein!<br>
  +
<tt>cols</tt> und <tt>rows</tt> geben die maximale Anzahl der dargestellten Spalten bzw. Zeilen einer Matrix an. <br>
  +
<tt>format</tt> bestimmt das Ausgabeformat für jedes Element. Erlaubt ist jeder in Matlab gültige Formatstring, mit Ausnahme des Specifiers <tt>%u</tt>, und hat auch die selbe Bedeutung wie in Matlab. Gedacht ist dies zwar nur für die Angabe eines Zahlenformats, jedoch ist es auch möglich komplexeres zu definieren (z.B.: format=num:%f). Da aber gewisse Ersetzungen im Formatstring durchgeführt werden, können evtl. unvorhergesehene Ergebnisse resultieren. <br>
  +
<tt>novarname</tt> bewirkt, dass die Ausgabe des Variablennamens vor dem Inhalt der Variable unterdrückt wird und kann nach Belieben angegeben oder weggelassen werden. <br>
  +
Sei <tt>x</tt> eine NxN Einheitsmatrix mit N>4, so ergibt obiger Befehl im Prinzip folgede Ausgabe:
  +
1.00 0.00 ... 0.00
  +
0.00 1.00 ... 0.00
  +
... ... ... ...
  +
0.00 0.00 ... 1.00
  +
   
 
2.Variante: überall wo Matlab etwas ausgeben würde dieses auch anzeigen
 
2.Variante: überall wo Matlab etwas ausgeben würde dieses auch anzeigen
   
 
Weiters sollen von Matlab generierte Bilder auch angezeigt werden (können).
 
Weiters sollen von Matlab generierte Bilder auch angezeigt werden (können).
  +
  +
<hr style="width:90%; background-color:black; height:2px; margin-left:5%; margin-bottom:20px;">
  +
  +
'''LaTeX Befehle:'''
  +
  +
Mit
  +
%\befehl
  +
können einfache Latex Befehle angegeben werden. Diese haben nur auf die LaTeX- und PDF-Ausgaben Auswirkungen und werden für andere Ausgabeformate ignoriert. Dabei ist zu beachten, dass die gesamte Zeile als Befehl gesehen wird. Ein wichtiges Beispiel wäre:
  +
%\newline
  +
  +
<span style="color: green;">Funktioniert</span>
   
 
<hr style="width:90%; background-color:black; height:2px; margin-left:5%; margin-bottom:20px;">
 
<hr style="width:90%; background-color:black; height:2px; margin-left:5%; margin-bottom:20px;">
   
 
'''Weiteres:'''
 
'''Weiteres:'''
* Listen
 
 
* ...
 
* ...
   
Zeile 172: Zeile 264:
 
===Formeln===
 
===Formeln===
 
* schreiben in Latex-Syntax
 
* schreiben in Latex-Syntax
  +
** Für HTML werden Bilder generiert und ins html-File eingebaut.
* Umsetzung in Planung, Ideen:
 
  +
*** Problematisch, wenn am Rechner kein Latex vorhanden ist (weit entfernter Traum: Webservice).
** MathML und XHTML <br> Darstellungsprobleme, LaTeX2MathML Transformation fraglich
 
  +
*** Wenn das Bild nicht generiert werden konnte, wird eine Fehlermeldung ausgegeben, aber der Export nicht unterbrochen (der Rest kann ja höchstwahrscheinlich erstellt werden).
** Bilder generieren und ins zu erstellende File einbauen <br> Wie generieren, geht's auch ohne Latex (weit entfernter Traum: Webservice)
 
   
 
===Anmerkung zur Entwicklung===
 
===Anmerkung zur Entwicklung===
Zeile 184: Zeile 276:
 
* Variablenerkennung: Was links von einem = steht ist eine Variable
 
* Variablenerkennung: Was links von einem = steht ist eine Variable
 
** Diese Erkennung ist nicht für die Partitionierung geeignet!!
 
** Diese Erkennung ist nicht für die Partitionierung geeignet!!
  +
  +
==Metadaten==
  +
Tags nach: [http://dublincore.org/documents/dcmi-terms/ http://dublincore.org/documents/dcmi-terms/]
  +
  +
'''Problem damit:''' Für den Autor gibt es nur den Tag: <tt>creator</tt>, toll wäre etwas mehr Information, weshalb hier nicht dcmi-terms verwendet werden.
  +
  +
Implementierte Tags:
  +
* author
  +
** name
  +
** email
  +
** homepage
  +
* file
  +
** title
  +
** date
  +
** content
  +
** type
  +
  +
Weiteres '''Problem''': Es macht nicht viel Sinn filespezifische Daten in den Preferences zu speichern. Lösungsideen:
  +
* Preferences bei jedem File-Öffnen löschen (wäre z.B. beim Feld <tt>date</tt> nicht nötig.
  +
* Beim Export Dialogfeld anstelle der Preferences
   
 
==Struktur==
 
==Struktur==
Zeile 206: Zeile 318:
 
public String export(IDocument document, Properties properties, Properties metadata, IPath XMLOutputFilePath) {}
 
public String export(IDocument document, Properties properties, Properties metadata, IPath XMLOutputFilePath) {}
 
public String export(Properties properties, Properties metadata, IPath XMLOutputFilePath) {}
 
public String export(Properties properties, Properties metadata, IPath XMLOutputFilePath) {}
  +
public String exportOnlyVars(IDocument document, Properties metadata, IPath XMLOutputFilePath) {}
  +
public String exportOnlyVars(Properties metadata, IPath XMLOutputFilePath) {}
  +
public String exportOnlyFuncs(IDocument document, Properties metadata, IPath XMLOutputFilePath) {}
  +
public String exportOnlyFuncs(Properties metadata, IPath XMLOutputFilePath) {}
 
public void exportPics(IPath outputDir, String filetitle) {}
 
public void exportPics(IPath outputDir, String filetitle) {}
 
public void transformToHTML(String filetitle) {}
 
public void transformToHTML(String filetitle) {}
Zeile 215: Zeile 331:
 
}
 
}
 
Der Funktion <tt>export(...)</tt> kann man über das <tt>Properties</tt> Objekt den Namen des Schema-Files mitteilen (mehr wird nicht verwendet). Passt dessen Default-Wert, so kann <tt>null</tt> übergeben werden. Der Titel des zu exportierenden Files wird im XML-File festgehalten, falls er übergeben wird.
 
Der Funktion <tt>export(...)</tt> kann man über das <tt>Properties</tt> Objekt den Namen des Schema-Files mitteilen (mehr wird nicht verwendet). Passt dessen Default-Wert, so kann <tt>null</tt> übergeben werden. Der Titel des zu exportierenden Files wird im XML-File festgehalten, falls er übergeben wird.
  +
  +
Mit '''<tt>exportOnlyVars(...)</tt>''' kann eine Liste (im XML-Format) der im File verwendeten Variablen geholt werden. Da der Partitioner keine Variablen markiert, müssen sie in dieser Funktion erkannt werden. Dazu wird das Dokument in Zeilen zerlegt, welche wiederum mit <tt>';'</tt> als Token in Befehle zerteilt werden. Ist nun ein Befehl in der Form "<tt> var = .... </tt>" aufgebaut, so ist <tt>var</tt> eine Variable. Die dabei verwendete Regex ist:
  +
\s*([a-zA-Z][\w_]*)(\(.*\))?\s*=.*
  +
wobei der Inhalt der ersten capturing group der Name der Variable ist. Im Ausgabefile wird jede Variable nur ein Mal angeführt.
  +
  +
Die Funktionen '''<tt>exportOnlyFuncs(...)</tt>''' leisten im Prinzip das Gleiche, wobei hier alle verwendeten Matlab-Funktionen geliefert werden. Die Suche nach Funktionen basiert hier auf der Partitionierung des Dokuments.
   
 
====Verwendung als Anwendung====
 
====Verwendung als Anwendung====
java at.tugraz.itp.mltutor.tools.XMLExporter <inputfile> [-o <outputfile>] [--html]
+
java at.tugraz.itp.mltutor.tools.XMLExporter <inputfile> [-o <outputfile>] [--xml] [--html] [--latex] [--pdf] [--varonly] [--funconly] [-m <metadatafile>]
   
Als Parameter ist dem Programm der Filename des zu exportierenden .m Files anzugeben. Als optionalen Parameter kann man den Namen des Output-Files angeben. Wenn das nicht geschieht, wird der Name des Matlab-Files verwendet, wobei die Dateiendung von .m auf .xml geändert wird. Bei Angabe von Pfaden beim Ausgabefile ist zu beachten, dass diese relativ zum (evtl. im Konfigurationsfile angegebenen) Ausgabeverzeichnis liegen. Weiters kann mit der Option <tt>--html</tt> die Generierung eines html-Files, welches (bis auf die Endung) gleich wie das Ausgabefile benannt wird, befohlen werden.
+
Als Parameter ist dem Programm der Filename des zu exportierenden .m Files anzugeben. Als optionalen Parameter kann man den Namen des XML-Output-Files angeben. Wenn das nicht geschieht, wird der Name des Matlab-Files verwendet, wobei die Dateiendung von .m auf .xml geändert wird. Bei Angabe von Pfaden beim Ausgabefile ist zu beachten, dass diese relativ zum (evtl. im Konfigurationsfile angegebenen) Ausgabeverzeichnis liegen. Mit den Optionen <tt>--xml</tt>, <tt>--html</tt>, <tt>--latex</tt> und <tt>--pdf</tt> wird angegeben, welche Files generiert werden sollen. Deren Namen entspricht (bis auf die Endung) dem des Ausgabefiles. Wichtig: sollte die Option <tt>--xml</tt> nicht angegeben werden, so wird das xml-File nach dem Durchführen der Transformationen wieder gelöscht!<br>
  +
Ist <tt>--varonly</tt> (<tt>--funconly</tt>) gesetzt, so werden nur die im Matlab-File vorhandenen Variablen (Matlab-Funktionen) ausgegeben. In diesem Fall ist derzeit nur eine Ausgabe in XML möglich. <br>
  +
Weiters kann ein File, welches Metadaten (Autor, Email, ...) enthält angegeben werden. Dessen Format muss kompatibel zur <tt>Properties</tt> Klasse sein.
   
 
Es sollte an der durch <tt>PROPERTYFILE</tt> spezifizierten Stelle ein Properties-XML File befinden, falls von den Default-Werten abweichende Einstellungen vorgenommen werden sollen.
 
Es sollte an der durch <tt>PROPERTYFILE</tt> spezifizierten Stelle ein Properties-XML File befinden, falls von den Default-Werten abweichende Einstellungen vorgenommen werden sollen.
Zeile 231: Zeile 355:
 
* <tt>SCHEMAFILE</tt> - Pfad und Name des XML-Schema Files (wird wie angegeben in das XML-File eingetragen)
 
* <tt>SCHEMAFILE</tt> - Pfad und Name des XML-Schema Files (wird wie angegeben in das XML-File eingetragen)
   
====Entwicklungsnotizen====
+
===Entwicklungsnotizen===
  +
====Nomenklatur====
 
Benennung von Variablen, die Filenamen und Verzeichnisse speichern:<br>
 
Benennung von Variablen, die Filenamen und Verzeichnisse speichern:<br>
 
{|
 
{|
Zeile 243: Zeile 368:
 
| Komplette Pfadangabe eines Files
 
| Komplette Pfadangabe eines Files
 
|}
 
|}
  +
  +
====Hinzufügen eines Markup-Elements====
  +
Diese Beschreibung funktioniert, wenn das Element sich über eine Zeile erstreckt und von einer RegEx erkannt werden kann. Das Hinzufügen einer nicht numerierten Liste in Wiki-Syntax wird hier als Beispiel verwendet.
  +
* Definieren der nötigen Tags als static member
  +
private final static String XML_M_LISTITEMTAG = "listitem";
  +
* Hinzufügen der RegEx im Konstruktor
  +
this.regexList.add(new MarkupRegex("(%\\*\\s*(.*))", XML_M_LISTITEMTAG));
  +
* Erweitern der XSL-Files
   
 
===Export aus dem MLTutor heraus===
 
===Export aus dem MLTutor heraus===
Zeile 254: Zeile 387:
 
zuständig. Diese sind mit den Menüpunkten File->Export bzw. File->Export as... verbunden.
 
zuständig. Diese sind mit den Menüpunkten File->Export bzw. File->Export as... verbunden.
   
Beide verwenden zum Exportieren die Klasse <span style="color:#00CC44">XMLExporterThread</span>, welche eine Art Mini-Facade für <span style="color:#00CC44">XMLExporter</span> darstellt. public class <span style="color:#00CC44">XMLExporterThread</span> implements Runnable {
+
Beide verwenden zum Exportieren die Klasse <span style="color:#00CC44">XMLExporterThread</span>, welche eine Art Mini-Facade für <span style="color:#00CC44">XMLExporter</span> darstellt.
  +
public class <span style="color:#00CC44">XMLExporterThread</span> implements Runnable {
 
public XMLExporterThread(IDocument document, Properties metadata, IPath XMLFilePath,
 
public XMLExporterThread(IDocument document, Properties metadata, IPath XMLFilePath,
 
boolean xmlOutput, boolean htmlOutput, boolean latexOutput, boolean pdfOutput) {}
 
boolean xmlOutput, boolean htmlOutput, boolean latexOutput, boolean pdfOutput) {}
Zeile 261: Zeile 395:
 
}
 
}
 
Eine Initialisierung entfällt hier, da es ja schon einen Partitioner zum Dokument gibt. Dadurch ist das <tt>CONFIGFILEDIR</tt> ohne Bedeutung. <br>
 
Eine Initialisierung entfällt hier, da es ja schon einen Partitioner zum Dokument gibt. Dadurch ist das <tt>CONFIGFILEDIR</tt> ohne Bedeutung. <br>
<tt><span style="color:#00CC44">MatlabExportAction</span></tt> verwendet direkt <tt>doExportOperations()</tt>, <tt><span style="color:#00CC44">MatlabExportAsAction</span></tt> hingegen startet einen neuen Thread.
+
<tt><span style="color:#00CC44">MatlabExportAsAction</span></tt> verwendet direkt <tt>doExportOperations()</tt>, <tt><span style="color:#00CC44">MatlabExportAction</span></tt> hingegen startet einen neuen Thread.
   
 
===Scripts===
 
===Scripts===
Zeile 279: Zeile 413:
 
===Menüpunkte===
 
===Menüpunkte===
 
* File->'''Export as...''' <br> Erzeugt "Speichern Unter"-Dialog, wobei das Ausgabeformat durch die angegebene Dateiendung bestimmt wird. <br> Das gewählte Verzeichnis und die Dateiendung werden gespeichert und beim nächsten Aufruf des Dialogs vorgeschlagen. Der vorgeschlagene Filename entspricht (bis auf die Endung) dem des Matlab Files. Als Quelle für die Daten dient der im Editor angezeigte Text, nicht das gespeicherte File.
 
* File->'''Export as...''' <br> Erzeugt "Speichern Unter"-Dialog, wobei das Ausgabeformat durch die angegebene Dateiendung bestimmt wird. <br> Das gewählte Verzeichnis und die Dateiendung werden gespeichert und beim nächsten Aufruf des Dialogs vorgeschlagen. Der vorgeschlagene Filename entspricht (bis auf die Endung) dem des Matlab Files. Als Quelle für die Daten dient der im Editor angezeigte Text, nicht das gespeicherte File.
* File->'''Export''' <br> Führt alle Exporte wie in der zugehörigen Preference Page angegeben durch und verlangt keine weiteren Usereingaben.
+
* File->'''Export''' <br> Führt alle Exporte wie in der zugehörigen Preference Page angegeben durch. Sofern in den Preferences angegeben wird der Export Dialog angezeigt.
   
===Die Propertypage===
+
===Die Preferencepage===
====gewünschte Konfigurationsmöglichkeiten====
+
====implementierte Konfigurationsmöglichkeiten====
  +
* Autor
* Ausgabeverzeichnis <span style="color:#00FF00">imlementiert</span>
 
* Ausgabeformat(e) <span style="color:#00FF00">imlementiert</span>
 
* Autor <span style="color:#00FF00">imlementiert</span>
 
 
** Name
 
** Name
 
** Email
 
** Email
 
** Homepage
 
** Homepage
  +
* Filespezifische Daten
  +
** Titel
  +
** Datum
  +
** Inhalt
  +
** Typ (Script oder Function)
  +
* Export-Dialog vor jedem Export anzeigen
  +
* Ausgabeverzeichnis
  +
* Ausgabeformate
  +
** Auswahl ob nur LaTeX-Kern erzeugt werden soll
  +
* Auswahl ob Zeilennummern erzeugt werden sollen
  +
* Auswahl der zu verwendenden XSLT-Files
  +
  +
====gewünschte Konfigurationsmöglichkeiten====
 
* Namen der erzeugten Files
 
* Namen der erzeugten Files
 
* für HTML:
 
* für HTML:
Zeile 294: Zeile 439:
 
* für LaTeX:
 
* für LaTeX:
 
** Angabe einer eigenen Präambel
 
** Angabe einer eigenen Präambel
  +
  +
===Der Export-Dialog===
  +
[[image:Export_dialog.png|thumb|Der Export-Dialog]]
  +
Wenn gewünscht wird vor jedem Export (mit dem Menüpunkt Export) ein Dialog angezeigt, in welchem filespezifische Daten und die wichtigsten Ausgabeoptionen geändert werden können. Die getroffenen Einstellungen werden in den Preferences gespeichert, jedoch nur wenn der Dialog mit OK beendet wird.
  +
  +
===Speichern von filespezifischen Daten===
  +
Nach einem Export wird im Verzeichnis des Matlab-Files ein verstecktes File erzeugt, in welchem die Einstellungen des Export-Dialogs gespeichert werden. Bei einem weiteren Export dieses Files werden diese Daten in den Export-Dialog geladen. Auf die Preferences hat dies erst dann Auswirkungen, wenn der Dialog positiv beendet wird. Sollte also der Export-Dialog gar nicht angezeigt werden, so ist dieses File irrelevant.

Aktuelle Version vom 11. Februar 2007, 13:12 Uhr

Es soll möglich sein "von außen" dem MLTutor ein Matlab-File zu übergeben, woraufhin er dieses partitioniert und diese Information in einem XML-File speichert.

Für dieses File sind Transformationen für html und tex zu schreiben.

Zielsetzung für html: z.B. http://itp.tugraz.at/LV/kernbich/AppSoft-1/MatlabPublish/

Was geht

  • Aufruf von außen für ein File
  • Export des aktuellen Files aus dem MLTutor heraus
    • Menüpunkt "Export as..." mit "Speichern unter" Dialog
    • Menüpunkt "Export" welcher die Einstellungen aus der Preference Page nimmt
    • Export-Dialog mit jenen Daten, die sich am ehesten von File zu File ändern.
      • Speichern der getroffenen Einstellungen, sodass beim Export eines Files die Einstellungen vom letzten Export dieses Files geladen werden.
  • Konfiguration über XML-File
  • Erzeugen eines XML-Files
    enthält:
    • Metadaten
    • Partitionierung
    • Den Originalcode
    • Auszeichnungselemente
  • Urform eines Schemas existiert - muss aktualisiert werden
  • Transformation allgemein
    • Java-Funktionalität zum Transformieren (in beliebiges Format)
  • Transformation in HTML
    • XSL File
    • php-Skript für serverseitige Transformation
    • Java-Funktion um gleich ein html-File zu exportieren
  • Transformation in LaTeX
    • XSL File und LaTeX Template
    • Java-Funktionalität um gleich ein tex-File zu exportieren
    • Nur LaTeX Kern ausgeben möglich (alles was sonst innerhalb der document Umgebung steht)
  • Transformation in PDF (aus tex-File)
  • Preference Page für den Export
    • Einstellungen für:
      • Speicherort
      • Ausgabeformate (XML, HTML, LaTeX (nur Kern oder alles), PDF)
      • Metadaten
      • Export-Dialog anzeigen
      • Zu verwendende XSLT Files
  • Nur Variablen liefern
  • Nur Funktionen liefern

Beispieldokument

Den XML-Output gibt's hier.

Folgende Transformationsergebnisse kann man sich anschauen:

  HTML LaTeX PDF
Mit Zeilennummern Link Link Link
Ohne Zeilennummern Link Link Link

(Alle weiteren nötigen Files sind auch dort zu finden)

short.m:

% ==Einfaches Testbeispiel==
% ===Der Code=== 
ex = [0:5]     % dies ist der laufindex 
for ind=1:10
    sin(ind)
    erg(ind,:)=ind.^ex
end
disp('fertig');

% === Doppelbedeutung von 'end' ===
for ind=1:10
    disp(num2str(erg(ind:end,1)));
end

% ===Latex Problemzeichen===
str_arr = {'knock knock', 'who is it'};
eqsys   = [1,4;2,3];
y       = [5;6];
x       = eqsys \ y
eqsys = 0; y=0;

% ===Formatierungstests=== 
%% jetzt ein bissi text
%% und noch etwas
%%  
%% neue zeile
%%
%% und auch <tt>variablen</tt> gibts hier
%%
%% genauso wie [http://links.da]
%% und Formeln:
%% $$a=\int_0^1 x^2 dx$$
%%
%* hallo Echo!
%* hallo Listeneintrag!
%# ich kann mehr, 
%# ich bin eine Aufzaehlung
%# und was fuer eine!
%%
%# ich bin auch eine, aber noch klein

dies = eine; %% unangenehme Sache!

% ====verschiedene Leerzeilen====

%%

%%
%%

oben  = 1 % Leerzeile
unten = 2 % Leerzeilen


%%
%% Text nach Markup-Leerzeile

%% Text nach codebox

Änderungen:

Beispieldokument und XML-Format umfassend geändert (Zeilennummern, Listen) --Osiris 14:47, 26 December 2006 (CET)
Beispieldokument erweitert (Doppelbedeutung von end), XML-Format erweitert (Metadaten) --Osiris 10:02, 30 October 2006 (CET)
Beispieldokument erweitert und den Rest aktualisiert --Osiris 13:48, 4 June 2006 (CEST)
Änderung des XML-Formats und Erweiterung (Metadaten - Autor) --Osiris 12:32, 4 June 2006 (CEST)
Kleine Änderung bei den Gleichungen und der Formatierung des XML-Files --Osiris 18:32, 16 May 2006 (CEST)

Was fehlt / Ideen

  • Allgemein:
    • Welche Metadaten kommen ins HTML & PDF
  • Markupsprache
    • verborgener Text
    • Platzhalter in Links
  • Im XML-Format:
    • Tags für Metadaten: so lassen oder alles dcmi (siehe weiter unten)
  • Im erzeugten HTML-File:
    • Link zum .m-File
  • LaTeX Ausgabe:
    • In shorts.tex stehen Daten zum Autor und so drinnen, dies vernünftig managen.
  • Preference Page für den Export fertigstellen
    • Einstellungen für:
      • Was kommt in den Header
  • Verbindung mit der Matlab-Konsole
    • Matlab-Ausgaben sollen angezeigt werden können
      • Dafür den Code Zeile für Zeile an Matlab übergeben und die Antwort auswerten (Variante 2)
      • oder nur bei Anforderung etwas an Matlab schicken (Variante 1)

Auszeichnungssprache

Es soll möglich sein, in Kommentaren Text auszeichnen zu können. Dieser wird nun nicht als Matlab-Kommentar sondern entsprechend seiner Bestimmung formatiert ausgegeben. Ziel ist es, damit bereits im .m File eine schön formatierte Seite zu definieren, um Code einfach und ansehnlich zu dokumentieren.

Als Basis wird die Wiki-Syntax verwendet.

Elemente

Überschriften mit

%==Überschrift 1==
%===Überschrift 2===

Wobei auch die Erstellung von Inhaltsverzeichnissen möglich sein soll.

Überschriften funktionieren


Gewöhnlicher Text in Proportionalschrift, wobei Absätze durch "Leerzeilen" erzeugt werden.

%% blabla blablabla
%%
%% Hier startet ein neuer Absatz, und blabla

Funktioniert


Hervorhebung von Variablen im Text:

%% bla <tt>variable</tt>

Funktioniert


Links und vordefinierte Platzhalter

%% [http://something.somedomain Links] wie im Wiki, 
%% und Kurzformen: [matref://sin]

Links funktionieren, müssen aber in [] angegeben werden


Verborgener Text

% <!-- Dies kommt zwar ins XML, wird aber in den entgültigen Seiten nicht mehr 
% dargestellt -->

% <!-- Auch enthaltener Matlab Code 
testi = sin(input) > 0; 
% wird ausgeblendet -->

Formeln Sowohl inline

%% Hier steht eine Formel $l = a \cdot tex$ im Text

Als auch zentriert in einer eigenen Zeile

%% $$ l = a \cdot tex $$

Letzteres funktioniert (in html mit png-Bildchen)


Listen (nicht nummeriert) und Aufzählungen (nummerierte Listen)

Definition einer Liste:

%* Der erste Punkt
%* Ein weiterer
%* usw.

Definition einer Aufzählung:

%# Der erste Punkt
%# Ein weiterer
%# usw.

Bei beiden ist eine tiefere Verschachtelung nicht möglich. Bei den Aufzählungen erfolgt eine durchgehende Nummerierung nur innerhalb eines Blocks direkt aufeinanderfolgender Elemente. (Auch ein eingestreutes Listenelement oder eine Leerzeile sind eine Unterbrechung!)

Funktioniert


Matlab-Ausgaben

1. Variante: Den Wert von x ausgeben lassen:

%var x cols=4 rows=4 format=%4.2f novarname

Dabei muss nach dem %var der Variablenname angeführt werden, die weiteren Parameter sind optional und ihre Reihenfolge ist irrelevant. Die = dürfen nicht von Leerzeichen gesäumt sein!
cols und rows geben die maximale Anzahl der dargestellten Spalten bzw. Zeilen einer Matrix an.
format bestimmt das Ausgabeformat für jedes Element. Erlaubt ist jeder in Matlab gültige Formatstring, mit Ausnahme des Specifiers %u, und hat auch die selbe Bedeutung wie in Matlab. Gedacht ist dies zwar nur für die Angabe eines Zahlenformats, jedoch ist es auch möglich komplexeres zu definieren (z.B.: format=num:%f). Da aber gewisse Ersetzungen im Formatstring durchgeführt werden, können evtl. unvorhergesehene Ergebnisse resultieren.
novarname bewirkt, dass die Ausgabe des Variablennamens vor dem Inhalt der Variable unterdrückt wird und kann nach Belieben angegeben oder weggelassen werden.
Sei x eine NxN Einheitsmatrix mit N>4, so ergibt obiger Befehl im Prinzip folgede Ausgabe:

   1.00   0.00    ...   0.00
   0.00   1.00    ...   0.00
    ...    ...    ...    ...
   0.00   0.00    ...   1.00


2.Variante: überall wo Matlab etwas ausgeben würde dieses auch anzeigen

Weiters sollen von Matlab generierte Bilder auch angezeigt werden (können).


LaTeX Befehle:

Mit

%\befehl

können einfache Latex Befehle angegeben werden. Diese haben nur auf die LaTeX- und PDF-Ausgaben Auswirkungen und werden für andere Ausgabeformate ignoriert. Dabei ist zu beachten, dass die gesamte Zeile als Befehl gesehen wird. Ein wichtiges Beispiel wäre:

%\newline 

Funktioniert


Weiteres:

  • ...

Formeln

  • schreiben in Latex-Syntax
    • Für HTML werden Bilder generiert und ins html-File eingebaut.
      • Problematisch, wenn am Rechner kein Latex vorhanden ist (weit entfernter Traum: Webservice).
      • Wenn das Bild nicht generiert werden konnte, wird eine Fehlermeldung ausgegeben, aber der Export nicht unterbrochen (der Rest kann ja höchstwahrscheinlich erstellt werden).

Anmerkung zur Entwicklung

  • Vordefinierte Platzhalter
    • konfigurierbar machen -> Property Page
    • speichern in Properties-File
    • brauchen nicht mehr im XML-File stehen
  • Für Matlab-Ausgaben den Code Zeile für Zeile an die ML-Konsole schicken
  • Variablenerkennung: Was links von einem = steht ist eine Variable
    • Diese Erkennung ist nicht für die Partitionierung geeignet!!

Metadaten

Tags nach: http://dublincore.org/documents/dcmi-terms/

Problem damit: Für den Autor gibt es nur den Tag: creator, toll wäre etwas mehr Information, weshalb hier nicht dcmi-terms verwendet werden.

Implementierte Tags:

  • author
    • name
    • email
    • homepage
  • file
    • title
    • date
    • content
    • type

Weiteres Problem: Es macht nicht viel Sinn filespezifische Daten in den Preferences zu speichern. Lösungsideen:

  • Preferences bei jedem File-Öffnen löschen (wäre z.B. beim Feld date nicht nötig.
  • Beim Export Dialogfeld anstelle der Preferences

Struktur

Die Klasse XMLExporter

public class XMLExporter {
    /** keys and default values for the properties */
    private final static String PROPERTYFILE      = "XML_export_properties.xml";
    public  final static String CONFIGFILEDIR_KEY = "CONFIGFILEDIR";
    private final static String CONFIGFILEDIR_DEF = "./";
    public  final static String OUTPUTDIR_KEY     = "OUTPUTDIR";
    private final static String OUTPUTDIR_DEF     = "./";
    public  final static String SCHEMAFILE_KEY    = "SCHEMAFILE";
    private final static String SCHEMAFILE_DEF    = "schema.xsd";

    // Definitionen der XML-Tags
    ...

    public static void main(String[] args) {}
    public static void writeToFile(String content, IPath outputFilePath) 
            throws FileNotFoundException, UnsupportedEncodingException, IOException {}
    public String export(IDocument document, Properties properties, Properties metadata, IPath XMLOutputFilePath) {}
    public String export(Properties properties, Properties metadata, IPath XMLOutputFilePath) {}
    public String exportOnlyVars(IDocument document,  Properties metadata, IPath XMLOutputFilePath) {}
    public String exportOnlyVars(Properties metadata, IPath XMLOutputFilePath) {}
    public String exportOnlyFuncs(IDocument document,  Properties metadata, IPath XMLOutputFilePath) {}
    public String exportOnlyFuncs(Properties metadata, IPath XMLOutputFilePath) {}
    public void exportPics(IPath outputDir, String filetitle) {}
    public void transformToHTML(String filetitle) {}
    public static void transform(String xmlFile, String xslFile, String outputFile) 
            throws FileNotFoundException, TransformerException {}
    public static String genSingleLineTag(String tag, String args, String content) {}
    public static String genSingleLineTag(String tag, String args, String content, boolean newline) {}
    ...
}

Der Funktion export(...) kann man über das Properties Objekt den Namen des Schema-Files mitteilen (mehr wird nicht verwendet). Passt dessen Default-Wert, so kann null übergeben werden. Der Titel des zu exportierenden Files wird im XML-File festgehalten, falls er übergeben wird.

Mit exportOnlyVars(...) kann eine Liste (im XML-Format) der im File verwendeten Variablen geholt werden. Da der Partitioner keine Variablen markiert, müssen sie in dieser Funktion erkannt werden. Dazu wird das Dokument in Zeilen zerlegt, welche wiederum mit ';' als Token in Befehle zerteilt werden. Ist nun ein Befehl in der Form " var = .... " aufgebaut, so ist var eine Variable. Die dabei verwendete Regex ist:

\s*([a-zA-Z][\w_]*)(\(.*\))?\s*=.*

wobei der Inhalt der ersten capturing group der Name der Variable ist. Im Ausgabefile wird jede Variable nur ein Mal angeführt.

Die Funktionen exportOnlyFuncs(...) leisten im Prinzip das Gleiche, wobei hier alle verwendeten Matlab-Funktionen geliefert werden. Die Suche nach Funktionen basiert hier auf der Partitionierung des Dokuments.

Verwendung als Anwendung

java at.tugraz.itp.mltutor.tools.XMLExporter <inputfile> [-o <outputfile>] [--xml] [--html] [--latex] [--pdf] [--varonly] [--funconly] [-m <metadatafile>]

Als Parameter ist dem Programm der Filename des zu exportierenden .m Files anzugeben. Als optionalen Parameter kann man den Namen des XML-Output-Files angeben. Wenn das nicht geschieht, wird der Name des Matlab-Files verwendet, wobei die Dateiendung von .m auf .xml geändert wird. Bei Angabe von Pfaden beim Ausgabefile ist zu beachten, dass diese relativ zum (evtl. im Konfigurationsfile angegebenen) Ausgabeverzeichnis liegen. Mit den Optionen --xml, --html, --latex und --pdf wird angegeben, welche Files generiert werden sollen. Deren Namen entspricht (bis auf die Endung) dem des Ausgabefiles. Wichtig: sollte die Option --xml nicht angegeben werden, so wird das xml-File nach dem Durchführen der Transformationen wieder gelöscht!
Ist --varonly (--funconly) gesetzt, so werden nur die im Matlab-File vorhandenen Variablen (Matlab-Funktionen) ausgegeben. In diesem Fall ist derzeit nur eine Ausgabe in XML möglich.
Weiters kann ein File, welches Metadaten (Autor, Email, ...) enthält angegeben werden. Dessen Format muss kompatibel zur Properties Klasse sein.

Es sollte an der durch PROPERTYFILE spezifizierten Stelle ein Properties-XML File befinden, falls von den Default-Werten abweichende Einstellungen vorgenommen werden sollen.

Und natürlich müssen die benötigten Eclipse Klassen irgendwie zugänglich gemacht werden (Package org.eclipse.jface.text)

Konfiguration

Die Konfiguration wird über ein zur Klasse java.util.Properties kompatibles XML-File durchgeführt. Die Keys sind in der oben angeführten Beschreibung der Klasse enthalten.

  • CONFIGFILEDIR - Verzeichnis in welchem die Konfigurationsfiles für den Partitioner liegen.
  • OUTPUTDIR - Verzeichnis in welches das erzeugte File gespeichert wird.
  • SCHEMAFILE - Pfad und Name des XML-Schema Files (wird wie angegeben in das XML-File eingetragen)

Entwicklungsnotizen

Nomenklatur

Benennung von Variablen, die Filenamen und Verzeichnisse speichern:

*Dir Verzeichnis
*FileName Name des Files, ohne Pfad/Verzeichnis - Angaben
*FilePath Komplette Pfadangabe eines Files

Hinzufügen eines Markup-Elements

Diese Beschreibung funktioniert, wenn das Element sich über eine Zeile erstreckt und von einer RegEx erkannt werden kann. Das Hinzufügen einer nicht numerierten Liste in Wiki-Syntax wird hier als Beispiel verwendet.

  • Definieren der nötigen Tags als static member
    private final static String XML_M_LISTITEMTAG    = "listitem";
  • Hinzufügen der RegEx im Konstruktor
        this.regexList.add(new MarkupRegex("(%\\*\\s*(.*))",         XML_M_LISTITEMTAG));
  • Erweitern der XSL-Files

Export aus dem MLTutor heraus

Dafür sind in gewohnter Manier die Klassen

public class MatlabExportAction extends MatlabAction implements IEditorActionDelegate{
...
}
public class MatlabExportAsAction extends MatlabAction implements IEditorActionDelegate{
...
}

zuständig. Diese sind mit den Menüpunkten File->Export bzw. File->Export as... verbunden.

Beide verwenden zum Exportieren die Klasse XMLExporterThread, welche eine Art Mini-Facade für XMLExporter darstellt.

public class XMLExporterThread implements Runnable {
    public XMLExporterThread(IDocument document, Properties metadata, IPath XMLFilePath, 
            boolean xmlOutput, boolean htmlOutput, boolean latexOutput, boolean pdfOutput) {}
    public void run() {}
    public void doExportOperations() throws FileNotFoundException, TransformerException {}
}

Eine Initialisierung entfällt hier, da es ja schon einen Partitioner zum Dokument gibt. Dadurch ist das CONFIGFILEDIR ohne Bedeutung.
MatlabExportAsAction verwendet direkt doExportOperations(), MatlabExportAction hingegen startet einen neuen Thread.

Scripts

tex2png.sh transformiert ein Latex-File in ein schönes Bildchen. Dies wird für die Umwandlung von Formeln in Bilder (für HTML) in der Funktion XMLExporter.latexToPic(...) benötigt.
Aufruf:

$ tex2png.sh <outputdir> <picname>

wobei <outputdir> das jenen Ort, an dem das zu transformierende .tex-File liegt, bezeichnet und <picname> den vollen Pfad des zu erzeugenden Bildes beinhaltet.


tex2pdf.sh macht aus dem tex-File ein PDF und löscht alle nebenbei anfallenden Dateien.
Aufruf:

$ tex2pdf.sh <outputdir> <texfilename>

wobei <outputdir> das jenen Ort, an dem das zu transformierende .tex-File liegt, bezeichnet und <texfilename> den Pfad zum tex-File absolut oder relativ zu <outputdir> beinhaltet.


Bedienung und Konfiguration im MLTutor

Menüpunkte

  • File->Export as...
    Erzeugt "Speichern Unter"-Dialog, wobei das Ausgabeformat durch die angegebene Dateiendung bestimmt wird.
    Das gewählte Verzeichnis und die Dateiendung werden gespeichert und beim nächsten Aufruf des Dialogs vorgeschlagen. Der vorgeschlagene Filename entspricht (bis auf die Endung) dem des Matlab Files. Als Quelle für die Daten dient der im Editor angezeigte Text, nicht das gespeicherte File.
  • File->Export
    Führt alle Exporte wie in der zugehörigen Preference Page angegeben durch. Sofern in den Preferences angegeben wird der Export Dialog angezeigt.

Die Preferencepage

implementierte Konfigurationsmöglichkeiten

  • Autor
    • Name
    • Email
    • Homepage
  • Filespezifische Daten
    • Titel
    • Datum
    • Inhalt
    • Typ (Script oder Function)
  • Export-Dialog vor jedem Export anzeigen
  • Ausgabeverzeichnis
  • Ausgabeformate
    • Auswahl ob nur LaTeX-Kern erzeugt werden soll
  • Auswahl ob Zeilennummern erzeugt werden sollen
  • Auswahl der zu verwendenden XSLT-Files

gewünschte Konfigurationsmöglichkeiten

  • Namen der erzeugten Files
  • für HTML:
    • Auswahl aus mehreren Styles
  • für LaTeX:
    • Angabe einer eigenen Präambel

Der Export-Dialog

Fehler beim Erstellen des Vorschaubildes: Datei fehlt
Der Export-Dialog

Wenn gewünscht wird vor jedem Export (mit dem Menüpunkt Export) ein Dialog angezeigt, in welchem filespezifische Daten und die wichtigsten Ausgabeoptionen geändert werden können. Die getroffenen Einstellungen werden in den Preferences gespeichert, jedoch nur wenn der Dialog mit OK beendet wird.

Speichern von filespezifischen Daten

Nach einem Export wird im Verzeichnis des Matlab-Files ein verstecktes File erzeugt, in welchem die Einstellungen des Export-Dialogs gespeichert werden. Bei einem weiteren Export dieses Files werden diese Daten in den Export-Dialog geladen. Auf die Preferences hat dies erst dann Auswirkungen, wenn der Dialog positiv beendet wird. Sollte also der Export-Dialog gar nicht angezeigt werden, so ist dieses File irrelevant.