2016-08-05 13 views
0

Ich habe ein Matlab-Skript, wo ich dynamisch Abschnitte in meinem Matlab veröffentlichen möchte.Kann man dynamisch Abschnitte zu einem Matlab Publish Skript hinzufügen?

Derzeit ist die einzige Weise, die ich kenne einen Abschnittsumbruch zu erstellen, ist der Code wie dies in meinem Skript zu setzen:

%% This is a section break 

Ich mag würde laufen auf meinem Skript veröffentlichen, und den Abschnitt haben Pausen werden als Teil der Veröffentlichung hinzugefügt. Zum Beispiel. Sagen wir, ich hatte das folgende Skript:

breaks(1).name = 'This is section break 1.'; 
breaks(2).name = 'This is section break 2.'; 

for ix = 1 : numel(breaks) 
    functionThatInsertsSectionBreakTitle(breaks(ix).name); 
    fprintf('Some random processing associated with break %d.\n', ix); 
end 

Ich möchte auf diesem Skript veröffentlichen nennen, und mit einem Dokument am Ende, das wie etwas aussieht:

Dies ist Abschnittsumbruch 1.

Einige Zufallsverarbeitung mit Pause assoziiert 1.

Dies ist Abschnittsumbruch 2.

Einige Zufallsverarbeitung mit Pause zugeordnet 2.

Offensichtlich konnte ich dies tun, indem ein Skript zu schreiben, die ein Skript schreibt, die dann durch veröffentlichen ausgeführt wird. Ich habe auf etwas direkteres gehofft. Ich bin mir der Toolbox zur Berichterstellung bewusst, von der ich hoffe, dass sie diese Art von Szenario sauber behandeln würde. Alternativ, wenn der neue (ab R2016a) Live Script diesen Anwendungsfall behandelt, ist das auch eine gute Antwort.

+1

Sie möchten also die '.m' Datei programmatisch erstellen? – Suever

+1

@Suever: das wäre zumindest eine Lösung für das angegebene Problem. Ich bin mir nicht sicher, aber die Publishing-Funktionalität ist ziemlich begrenzt. Mathworks "Report Generation" (eine andere Toolbox) ermöglicht alternativ eine detailliertere Konfiguration. –

+0

@Suever, nicht meine Post. : D –

Antwort

1

Eine Möglichkeit, dieses Problem zu beheben, ist die Anzeige von HTML-Code in der Befehlsausgabe (dokumentiert here).

breaks(1).name = 'This is section break 1.'; 
breaks(2).name = 'This is section break 2.'; 

for ix = 1 : numel(breaks) 
    disp(['<html><h2>' breaks(ix).name '</h2></html>']); 
    fprintf('Some random processing associated with break %d.\n', ix); 
end 

mit einem benutzerdefinierten Layout, wie einen Tisch Das ist unglaublich nützlich, wenn Sie wollen Ergebnisse erhalten werden angezeigt:

In Ihrem Beispiel der Code wie folgt aussehen würde. Und es vermeidet die Notwendigkeit, eine Matlab Report Generator Lizenz zu haben ...

+0

Wow! So offensichtlich im Hinterkopf. Vielen Dank! – John

Verwandte Themen