2014-10-07 10 views
19

Ich arbeite an gemeinsamem Matlab-Code und möchte eine generierte Dokumentation als durchsuchbare HTML-Dokumente in unserem lokalen Netzwerk teilen.Wie kann Matworks HTML-Dokumentation mit Mathworks generiert werden?

Ich kenne die folgenden Methoden, um eine Dokumentation zu generieren:

  1. einen Konverter zu C++ schreiben - wie Dateien. Dies geschieht in Using Doxygen with Matlab (Letzte Aktualisierung 2011) und mtoc++ (letzte Aktualisierung 2013). Die C++ - ähnlichen Dateien werden dann von Doxygen analysiert.
  2. Verwenden Sie Pythons sphinxcontrib-matlabdomain, um eine HTML-Dokumentation zu generieren.
  3. Verwenden Sie m2html, die auch eine Lösung von Drittanbietern ist.
  4. Weitere Optionen sind in dieser Q & As aufgeführt: One, Two und .

Alle Möglichkeiten werden von Mathworks nicht unterstützt. Alle Möglichkeiten müssen ich erwähnen, d. H. Die Parameter einer Funktion selbst. Sie analysieren nicht den Code in dem Sinne, Doxygen tut es für das heißt Java:

//! an object representation of the advertisement package sent by the beacon 
private AdvertisementPackage advertisementPackage; 

ich von Matlab publish() Funktion gehört, aber ich habe es nie im oben genannten Sinne gebraucht.

Frage: Was ist die Mathworks-Methode, Matlab HTML-Dokumentation zu generieren. Kann der Code selbst analysiert werden? Kann ich die Informationen, die dem Matlab Input Parser zur Verfügung gestellt werden, bereits verwenden? Bitte geben Sie Ihre persönlichen Präferenzen in Kommentaren an.

Beispiel:

%% Input parser 
p = inputParser; 
addRequired(p, 'x', @isnumeric); 

validationFcn = @(x) (isnumeric(x) && isscalar(x)); 
addRequired(p, 'fftSize', validationFcn); 
addRequired(p, 'fftShift', validationFcn); 

validationFcn = @(x) (isa(x, 'function_handle')); 
addRequired(p, 'analysisWindowHandle', validationFcn); 

parse(p, x, fftSize, fftShift, analysisWindowHandle); 
+1

Um die von mir verfasste [MatlabDomain Sphinx Extension] (https://pypi.python.org/pypi/sphinxcontrib-matlabdomain) zu klären, analysiert _does_ Ihren Code und generiert automatisch ähnliche Dokumente wie Epydoc. Verwenden Sie die ['autosummary extension'] (http://sphinx-doc.org/latest/ext/autosummary.html), um Ihre gewünschte Quelle aufzulisten, und verwenden Sie dann [' sphinx-autogen'] (http: // sphinx- doc.org/latest/ext/autosummary.html?highlight=autogen) automatisch [autodoc] erzeugen (http://sphinx-doc.org/latest/ext/autodoc.html#module-sphinx.ext.autodoc) Stub-Dateien, dann erstellen Sie Ihre Dokumente. –

+1

Wir haben uns jetzt entschieden, die Sphinx-Straße zu nehmen, da wir bei Problemen schnell und gute Rückmeldungen erhalten haben. – Lukas

Antwort

12

Ich denke, Sie haben dieses Thema gut erforscht (wie HTML-Dokumentation aus MATLAB-Funktionen zu generieren), jetzt liegt es an Ihnen zu wählen, welche Methode für Sie am besten funktioniert.

Die publish-Funktion könnte zu author documentation verwendet werden. Sie schreiben normale M-Dateien mit specially crafted comments (in der Tat könnte die Datei alle Kommentare ohne Code sein), dann veröffentlichen Sie die Datei, um gerenderten HTML zu erhalten (es unterstützt auch other targets wie PDF, DOC, LaTeX, etc ...). Betrachten Sie es als eine einfachere MATLAB-spezifische Version von Markdown, die hier auf Stack Exchange sites verwendet wurde, um Beiträge zu formatieren.

Ein Aspekt, den Sie nicht erwähnt haben, ist die Integration der generierten Dokumentation in den integrierten Hilfe-Viewer. Dies geschieht durch Erstellen von info.xml und demos.xml Dateien und Organisieren der Dokumentation auf eine bestimmte Art und Weise. Sie können Ihre benutzerdefinierten Dokumente auch durchsuchen, indem Sie Lucene Indexdateien mithilfe der Funktion builddocsearchdb erstellen (wodurch die Suchfunktionalität in MATLAB-benutzerdefinierten Dokumenten intern aktiviert wird). Beachten Sie, dass es egal ist, wie Sie die HTML-Dokumente erstellt haben (Sie hätten publish oder sogar manuell geschriebene HTML-Dateien verwenden können).Der publish -basierte Workflow ist erweiterbar und Sie können ihn auf interessante Weise verwenden, indem Sie benutzerdefinierte XSL Vorlagendateien erstellen, um die analysierten Kommentare zu transformieren und zu rendern.

Zum Beispiel habe ich gesehen, dass es render equations mit MathJax verwendet, anstatt sich auf die integrierte Lösung zu verlassen. Ein anderes Beispiel ist publishing to MediaWiki markup (Format verwendet von Wikipedia). Andere Leute verwenden es, um Blog-Posts zu schreiben (siehe official blogs auf der MATLAB Central, die auf diese Weise erstellen), oder sogar generate text files später von statischen Site-Generatoren (wie Jekyll und Octopress Frameworks verarbeitet).

Soweit ich weiß, gibt es keine öffentlichen Tools, die den MATLAB-Code auf einer tieferen Ebene untersuchen und Funktionsparameter analysieren. Am besten kann ich reflection verwenden, um einige Metadaten über Funktionen und Klassen zu erhalten, obwohl diese Lösung nicht perfekt ist ...

MathWorks scheint mit ihrem eigenen internen System HTML-Dokumentation zu erstellen. Schade, sie teilen es nicht mit uns Benutzer :)

+0

Ich habe MATLABs HTML-Hilfedateien durchforstet und bemerkte Referenzen auf ein Produkt namens [Arbortext] (http://www.arbortext.com/): https://en.wikipedia.org/wiki/Arbortext_Advanced_Print_Publisher – Amro

3

Ich denke, das die Art und Weise des Schreibens Dokumentation offiziell santioned Mathworks ist: http://www.mathworks.co.uk/help/matlab/matlab_prog/display-custom-documentation.html

Im Grunde die HTML schreiben, und eine Reihe von Dateien hinzufügen, um es suchbar und anzeigbar zu machen in der MATLAB-Dokumentation.

+0

Können Sie bitte näher darauf eingehen? Ich sehe, dass ich selbst HTML-Dateien schreiben kann. Aber sehen Sie eine Möglichkeit, diese HTML-Dateien aus Informationen im Quellcode (Header, InputParser) zu generieren? – Lukas

+0

Die einzige Möglichkeit, HTML aus Code zu generieren, ist, soweit ich weiß, die 'publish' -Funktion mit dem MathWorks-Markup für den Code. – am304

+0

Soweit ich es jetzt herausgefunden habe, wird es das Skript ausführen. Meistens möchte ich Funktionen und deren Eingabe dokumentieren und nicht ausführen. Siehst du eine Lösung? – Lukas

0

gibt es eine einfache Möglichkeit zu veröffentlichen mit einer Funktion & es ist entsprechende Eingaben zu verwenden. Blick auf .