2017-02-03 46 views
0

publish功能MATLAB作品腳本和功能, 而一個Octave僅適用於腳本:如果我進入如何在八度中記錄一個函數?

publish myFunc.m 

倍頻給

error: publish: Only Octave script files can be published.

我是否能夠發佈函數在八度?如果是,如何?

+0

或者我應該轉向[其他發佈工具(https://www.mathworks.com/matlabcentral/answers/58438-which-tool-are-you-using-to-create-the-documentation-of-您與Matlab代碼)? –

+0

這似乎不是一個很好的問題。在我對這個主題做更多的研究之前,我會隨機接受一個(結束這個問題)。非常感謝這兩個答案! –

回答

3

您可以使用八度鍛造generate_html包其目的是要生成的各個功能的HTML。它主要用於生成Octave Forge軟件包的文檔,其默認值反映了這一點,但您可以添加任何您想要的樣式。

這個包將使用在八度的help功能看到這是在文件中評論說,不通過CopyrightAuthor開始第一塊相同的幫助文本。您可以使用純文本格式,但對於更好的格式,可以使用Texinfo。在這種情況下,幫助文本的第一行應該是-*- texinfo -*-。上有八度維基關於如何寫得真好help text包括語法的Texinfo短款(實際的Texinfo手冊可以是一個有點勢不可擋)的提示頁面。

除了幫助文本外,generate_html包還標識%!demo blocks,並生成一段包含演示代碼和其生成的輸出(包括數字)的部分。

看到幫助文本和演示塊八度是如何工作的,最好的辦法是檢查源(如@Andy在評論中指出)。例如,看source for inpolygon(滾動至底部找到%!demo塊,%!test%!error前右)。 generate_html包生成this page(注意演示塊)。

+0

謝謝!我試圖通過搜索'octave generate_html'找到適當的評論語法的一些參考,但沒有什麼有趣的。任何指針? –

+0

@FranklinYu它使用該函數幫助文本作爲文檔,而函數幫助文本是文件中的第一個批註塊,該文件不是由作者或版權開始的。 – carandraug

+0

哦,這與'publish'一樣。我想「也看看」的語法也是一樣的。那麼我如何爲參數寫評論呢?像[這裏](https://octave.sourceforge.io/generate_html/function/html_help_text.html),以某種方式生成了一個'

'。 –

2

這是一個問題「在一個多問題」,使得兩者之間大量的假設,讓我們解決這些第一:

我會在註釋的問題開始,因爲這是在最簡單:Matlab的發佈者是而不是的代碼文檔工具。這是一個「做一個快速報告,包括文本和代碼,以在您的主管會議上展示或在博客上寫一個快速點」工具。所以你指出的這個鏈接在這種情況下是無關緊要的,因爲它討論了matlab代碼的文檔。

2.是MATLAB的出版商也「適用於功能」,特別是這裏給出的第一個點的事實,應該被認爲是更多的錯誤比一個特點,或者至多是一個可有可無的無證擴展。如果您查看發佈命令的matlab documentation,您會發現它需要一個文件名,而不是一個帶參數的函數,而文檔僅討論腳本,並未提及「函數」兼容性。

此外,即使你沒有要使用發佈的「文檔工具」,這是違反直覺的這種格式的功能,因爲你需要提供的參數,以便發佈商合作(這將不會顯示在實際報告中),您需要一個顯示中間計算的修改版本(與大概沒有的普通版本相反),並且該功能在報告結尾處顯示了一個醜陋的ans= blabla。如果您的最終目標是文檔,那麼最好爲此編寫一個定製腳本,並顯示正確的用法和示例,例如matlab在其實際文檔中。


說了這麼多,是的,有一個「欺騙」你可以做,包括你發佈的報告,這是一個函數的代碼,在八度(因爲R2016b還matlab的)函數可以在本地定義。僅包含函數定義的.m文件被解釋爲函數文件,但如果在函數定義之前還有其他非函數聲明指令(註釋除外),則將其視爲腳本。所以,如果你發佈此腳本,您有效地得到它發佈的報告功能代碼:

%% Adding function 
% This function takes an input and adds 5 to it. 

%% Example inputs 
In = 10; 

%% The function itself 
% Marvel at its beauty! 
function Out = myfun(In) 

    %% Here is where the addition takes place. 
    % It is a beautiful addition 
    Out = In + 5; 

end 

%% Example use 
Out = myfun(In) 

(如果你不開心不必創建一個「包裝腳本」手動,你總是可以創建自己的包裝功能自動執行此操作)。

但是,matlab和八度音階出版商都是限制性工具的設計。就像我之前所說的,它更像是一個「向你的主管顯示數字和圖表的快速報告」工具,而不是「製作漂亮的文檔或專業報告」工具。相反,我會投資一個不錯的自動化乳膠工作流程,並查看用於顯示代碼的代碼格式化工具,並簡單地將該代碼包裝在腳本中,該腳本將輸出生成爲文件,然後導入到乳膠中。這可能聽起來像更多的工作,但從長遠來看它更加靈活和強大,特別是因爲格式化命令可能非常古怪而且有限。

+0

啊。抱歉。剛剛意識到,在函數內部執行任何「實際」發佈者格式化操作之前,會先評估函數的定義,然後再評估文件中的其餘指令。所以除非你打算簡單地轉儲一個函數的代碼*,否則你不能在函數中包含格式化指令。您最好的選擇是從頭開始編寫一個腳本,詳細說明該功能的步驟,並將發佈商的格式考慮在內。 –

+0

所以'發佈'實際上不是用於文檔?那麼MATLAB是否提供了任何官方文檔工具?我實際上在尋找文檔工具;我只是認爲「發佈」是MATLAB中文檔的術語。我覺得「作弊」比沒有文檔更糟糕。所以我想我鏈接的問題應該告訴一些真正的文檔工具? –

+0

Matlab文檔有兩種形式:您輸入'help'時看到的內容,以及'doc'內容。 Matlab提供了* some *工具,比如'helprpt',它可以讓你反饋你的函數是否包含使用'help'命令顯示的所有「推薦」文檔特性,例如簡短描述,長描述,示例,參見還」行,等。此外,MATLAB有一個非常一致‘爲通過'doc'命令來訪問文檔的文檔’的風格,但這些都是(大概是使用'publish'上相應的腳本)製作單獨的函數文件 –